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;
}
}
Swift3.0 -- 使用字典创建子视图(NSClassFromString创建类的实例)
最新推荐文章于 2022-05-21 13:12:32 发布