您的位置:首页 > 移动开发 > Swift

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;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: