Ios 实例化ViewController并将其从Swift中的字符串转换为类
我有一个字符串数组Ios 实例化ViewController并将其从Swift中的字符串转换为类,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我有一个字符串数组 var arr = ["firstViewController", "secondViewController", ....] 对于每个项目,我需要实例化ViewController,如 var myVC = self.storyboard?.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController 若我想从循环中实例化视图控制器,我需要从字符串生成类,
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)")!
在Swift中不起作用无法强制转换为运行时类型对象。Swift在编译时知道其所有变量的类型 现在您有了一个变量,它的值是编译器不知道的某种类型,因此编译器不能让您对类型转换的变量执行任何操作
引用:-,在Swift中,不能强制转换为运行时类型对象。Swift在编译时知道其所有变量的类型 现在您有了一个变量,它的值是编译器不知道的某种类型,因此编译器不能让您对类型转换的变量执行任何操作
参考:-,无需使用
NSClassFromString(:)
从循环实例化UIViewController
。在前两行代码中,您的方向是正确的:
let nameArray = ["firstViewController", "secondViewController" /*....*/]
var controllerArray = [UIViewController?]()
for name in nameArray {
controllerArray.append(self.storyboard?.instantiateViewController(withIdentifier: name))
}
无需使用
NSClassFromString(:)
从循环实例化UIViewController
。在前两行代码中,您的方向是正确的:
let nameArray = ["firstViewController", "secondViewController" /*....*/]
var controllerArray = [UIViewController?]()
for name in nameArray {
controllerArray.append(self.storyboard?.instantiateViewController(withIdentifier: name))
}
你们有并没有尝试过类似StackOverflow问题的解决方案?为什么你们需要这个?您可以将循环中的控制器实例化为UIViewController
s,然后在需要时尝试向下转换…您是否尝试过类似StackOverflow问题的解决方案?为什么需要这个?您可以将循环中的控制器实例化为UIViewController
s,然后在需要时尝试向下转换。。。