storyboard加载viewcontroller protocol实现

@objc(ABLoadFromStoryboardProtocol)
protocol ABLoadFromStoryboardProtocol: class {
    
    static func loadFromStoryboard() -> UIViewController
}

extension UIViewController {
    
    static func loadFromStoryboard<T: ABLoadFromStoryboardProtocol>(_: T.Type) -> T {
        
        if let vc = T.loadFromStoryboard() as? T {
            return vc
        }
        
        fatalError("Could not instantiateViewController from storyboard")
    }

}

需要加载的viewcontroller需要实现ABLoadFromStoryboardProtocol协议


extension CustomViewController: ABLoadFromStoryboardProtocol {

    static func loadFromStoryboard() -> UIViewController {

         return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "custom_view_story_identifier")

    }

}


加载调用方法

let customVC = UIViewController.loadFromStoryboard(CustomViewController.self)

现在这种方式就不需要每次找到identifier才能加载和强制转换为指定的viewcontroller了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值