我有字符串数组
var arr = ["firstViewController", "secondViewController", ....]
对于它的每个项目,我需要实例化ViewController,如
var myVC = self.storyboard?.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController
如果我想从循环中实例化视图控制器,我需要从字符串中创建类,但是这段代码
let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
let cls: AnyClass = NSClassFromString("\(namespace).\(className)")!
不工作
答案 0 :(得分:1)
在Swift中,您无法转换为运行时类型对象。 Swift在编译时知道所有变量的类型。
现在你有一个变量,它的值是编译器一无所知的某种类型,所以编译器不能让你对变量进行任何类型转换。
答案 1 :(得分:1)
无需使用NSClassFromString(_:)
从循环中实例化UIViewController
。你在前两行代码中朝着正确的方向前进:
let nameArray = ["firstViewController", "secondViewController" /*....*/]
var controllerArray = [UIViewController?]()
for name in nameArray {
controllerArray.append(self.storyboard?.instantiateViewController(withIdentifier: name))
}