【发布时间】:2015-12-28 11:01:30
【问题描述】:
我想我阅读了大部分 SO 问题和 Google 对此的回答,但仍然无法正常工作。以这个代码为例:
import UIKit
class Person: NSObject {
var name = "Pieter"
}
let PersonClass: AnyClass? = NSClassFromString("Person")
let person = PersonClass()
print(person.name)
将NSClassFromString("Person") 更改为NSClassFromString("MyAppName.Person") 并没有什么不同。在 PersonClass 声明后面添加as! NSObject.Type 也不行。在类声明之前添加@obcj(Person 也不。
现实生活中的目标是从数据库中读取类名并相应地加载适当的故事板/UIViewController。所以我正在寻找一种将 UIViewController 类名作为字符串传递并用它实例化 UIStoryboard 的方法。
怎么做?
编辑:根据您的建议,这是我目前在现实生活中尝试的方法:
let storyboard = UIStoryboard(name: "MyStoryboard", bundle: nil)
let MyClassName = "MyApp.MyTableViewController"
let MyClass = NSClassFromString(MyClassName) as! UITableViewController.Type
let controller = storyboard.instantiateInitialViewController() as! MyClass
它给出了一个错误说"MyClass" is not a type。我无法删除它,否则我会收到无法从 AnyClass 转换的错误。
【问题讨论】:
-
您是否检查了来自stackoverflow.com/questions/24030814/… 的所有答案?这个看起来很接近你想要的:stackoverflow.com/a/32265287/1187415.
-
查看我帖子中的编辑...
标签: ios swift uiviewcontroller swift2 nsobject