我想获得一个分配有类型的 myClass
值,然后从 Storyboard 中实例化它。
func detailViewControllerClasses(index: Int) -> UIViewController {
let myClass = [CollectionViewController().self, CollectionViewController().self, CollectionViewController().self, CollectionViewController().self][index]
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let vc = storyboard.instantiateViewController(withIdentifier: "CollectionViewController") as? myClass else {
fatalError("Unable to instatiate a ViewController from the storyboard.")
}
}
在 guard let
行中,编译器显示“未声明的变量 myClass”。我宣布它有几行没有错误或警告。为什么会出现此错误?
最佳答案
在访问 .self
之前实例化您的 CollectionViewControllers
。因此,您不是在创建一个类数组,而是一个实例数组。删除 ()
func detailViewControllerClasses(index: Int) -> UIViewController {
let myClass = [CollectionViewController.self, CollectionViewController.self, CollectionViewController.self, CollectionViewController.self][index]
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let vc = storyboard.instantiateViewController(withIdentifier: "CollectionViewController") as? myClass else {
fatalError("Unable to instatiate a ViewController from the storyboard.")
}
}
关于swift - 动态创建 View Controller 时使用未声明的类型 "myClass",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514250/