码迷,mamicode.com
首页 > 移动开发 > 详细

Swift反射机制实现 AppDelegate 字符串获取类并成为根控制器

时间:2016-11-24 11:26:48      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:visible   bounds   turn   ict   plist   项目   dem   make   ati   

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 字符串获取类并成为根控制器

标签:visible   bounds   turn   ict   plist   项目   dem   make   ati   

原文地址:http://www.cnblogs.com/sgxx/p/6096766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!