美文网首页iOS Developer
Swift3.0通过反射机制调用Controller

Swift3.0通过反射机制调用Controller

作者: fzkun | 来源:发表于2016-11-02 19:20 被阅读180次

    以下demo是通过AppDelegate创建window的时候,通过反射机制新建controller

    要注意的是

    1.在AppDelegate中,为了避免第三方引入库导致同名controller被反射,所以反射名的格式为:"项目名"."控制器名"
    例子:projectName + "." + "ListTableViewController"

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
     //反射机制
    
    window = UIWindow()
    
    window?.backgroundColor = UIColor.white
    
    //获取项目名
    
    let projectName = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? ""
    
    let className = projectName + "." + "ListTableViewController"
    
    let cls = NSClassFromString(className) as? ListTableViewController.Type
    
    let vc = cls?.init()
    
    window?.rootViewController = vc
    
    window?.makeKeyAndVisible()
    
    return true
    
    }
    
    

    欢迎关注我的公众号kk工作室,了解更多技术博文。


    kk工作室

    相关文章

      网友评论

        本文标题:Swift3.0通过反射机制调用Controller

        本文链接:https://www.haomeiwen.com/subject/kxxbuttx.html