Swift3.0 -- 使用字典创建子视图(NSClassFromString创建类的实例)
2017-02-17 15:15
399 查看
import UIKit //主控制器 class LYKMainViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() setupChlidControllers(); } } /* extension 类似于 OC 中的 分类, 在Swift中还可以用来切分代码 可以把功能相近的方法放在一个extension中 便于代码维护 注意:和 OC 的分类一样,extension 中不能定义属性 */ // MARK: --- 设置界面 extension LYKMainViewController { // 设置所有子控制器 func setupChlidControllers() { let array = [ ["clsName":"LYKHomeViewController", "title":"首页", "imageName":""] ]; var arrayM = [UIViewController](); for dict in array { arrayM.append(controller(dict: dict)); } viewControllers = arrayM; } /// 使用字典创建一个子控制器 /// /// - Parameter dict: 信息字典[clsname, title, imagename] /// - Returns: 子控制器 private func controller(dict: [String: String]) -> UIViewController { // 1.获取字典内容 guard let clsName = dict["clsName"], let title = dict["title"], let imageName = dict["imageName"], let cls = NSClassFromString(Bundle.main.namespace + "." + clsName) as? UIViewController.Type else { return UIViewController(); } // 2.创建视图控制器 let vc = cls.init(); vc.title = title; let nav = LYKNavigationController(rootViewController: vc); return nav; } }
相关文章推荐
- python创建和使用字典实例详解
- python字典创建和使用实例详解
- python字典创建和使用实例详解
- python创建和使用字典实例详解
- Spring Bean工厂创建Bean实例的方法之使用静态工厂类
- 一个使用泛型堆栈模块创建的两个容纳不同类型数据的实例
- 使用反射技术动态创建类对象(实例代码)
- Spring Bean工厂创建Bean实例的方法之使用工厂类
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 使用反射动态创建类的实例
- 在ORACLE中备份和恢复使用的动态视图和字典视图
- asp.net 使用radiobuttonlist的困惑 - 使用关键词New创建实例
- 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)
- 实例讲解.NET中资源文件的创建与使用(转)
- 实例讲解.NET中资源文件的创建与使用
- VBScript 使用 xmldom 检测/创建/读取/更改 XML 文件数据 实例 By shawl.qiu
- 利用CVSNT在Eclipse中使用CVS--3.创建一个CVS实例
- 实例讲解.NET中资源文件的创建与使用
- 使用 MyEclipse 插件创建 Hibernate + Struts 连接oracle实例(动画)
- Spring Bean工厂创建Bean实例的方法之使用构造器