注:因為Swift新增了命名空間的概念,所以通過一個字符串來創(chuàng)建一個類必須加上命名空間
- 實現(xiàn)代碼
func addChildViewController(childControllerName: String, title : String, imageName : String) {
//1.動態(tài)獲取命名空間
guard let name = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as? String else {
return
}
//2.通過類名來創(chuàng)建對應(yīng)的類
let cls : AnyClass? = NSClassFromString(name + "." + childControllerName)
//3.Swift中如果想通過一個Class來創(chuàng)建一個對象褥影,必須告訴系統(tǒng)這個Class的確切類型
guard let clsType = cls as? UITableViewController.Type else {
return
}
//4.通過Class創(chuàng)建對象
let childController = clsType.init()
//5.設(shè)置controller的相關(guān)屬性
childController.tabBarItem.image = UIImage(named: imageName)
childController.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
childController.title = title
let vc = UINavigationController.init(rootViewController: childController)
self.addChildViewController(vc)
}