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


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值