Swift反射机制实现 AppDelegate 字符串获取类并成为根控制器
Posted 三更小新
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift反射机制实现 AppDelegate 字符串获取类并成为根控制器相关的知识,希望对你有一定的参考价值。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) // 依据String名字拿到控制器(添加项目名称,命名空间,不能有数字和特殊符号) // 返回的是AnyClass? 需要as?强转 // 控制器添加Type类型 let rootControl = NSClassFromString("SwiftyDemo.ViewController") as? UIViewController.Type let vc = rootControl?.init() window?.rootViewController = vc window?.makeKeyAndVisible() return true }
同时可以用info.plist获取命名空间
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) // 依据String名字拿到控制器(添加项目名称,命名空间,不能有数字和特殊符号) // 返回的是AnyClass? 需要as?强转 // 控制器添加Type类型 // let rootControl = NSClassFromString("SwiftyDemo.ViewController") as? UIViewController.Type // 获取命名空间的值,可选 let str = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "" let con = NSClassFromString(str + "." + "ViewController") as? UIViewController.Type let vc = con?.init() window?.rootViewController = vc window?.makeKeyAndVisible() return true }
以上是关于Swift反射机制实现 AppDelegate 字符串获取类并成为根控制器的主要内容,如果未能解决你的问题,请参考以下文章