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獲取命名空間app
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 }