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

以下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工作室,了解更多技术博文。


Swift3.0通过反射机制调用Controller_第1张图片
kk工作室

你可能感兴趣的:(Swift3.0通过反射机制调用Controller)