Swift 通过字符串创建控制器

由于Swift 中新增了一个命名空间(在同一个命名空间中的文件可以直接访问而不用引入头文件)的概念 所以通过字符串创建控制器需要带上命名空间

1 首先为Bundle 写一个分类  获取命名空间

extension Bundle{
    var namespace : String {
     return   infoDictionary?["CFBundleName"] as? String ?? ""
    }
}

2 然后通过字符串直接创建控制器

guard let Class = NSClassFromString(Bundle.main.namespace+"."+"你的控制器名字字符串") as?UIViewController.Type else {
            
        }
 let vc = Class.init()
原文地址:https://www.cnblogs.com/ZhangShengjie/p/6795276.html