以下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工作室
网友评论