Swift3.0 -- 使用字典创建子视图(NSClassFromString创建类的实例)

来源:互联网 发布:儿歌软件哪个好 编辑:程序博客网 时间:2024/05/17 22:46
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;            }}

0 0
原创粉丝点击