想象一下,我有一个BaseViewController。然后我有两个场景,新建和编辑,其中两个共享相同的用户界面和大部分逻辑。所以我创建了类NewViewController和EditViewController,继承了BaseViewController。问题来了,当我尝试从故事板实例化“BaseViewController”,因为我想指定哪个实现。从Storyboard投射到子类
if isEdit {
storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! EditViewController
} else {
storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! NewViewController
}
然后我得到一个错误: 无法投型 'Test.BaseViewController' 的值(0x10ee5e0f0)为 'Test.EditViewController'(0x10ee5f000)。
我不想在故事板上同时拥有ViewController,因为我不想重做相同的用户界面2次。
从xib或storyboard加载类时,加载机制将创建文件中指示的类型的类。你不能通过魔法改变类的类型。你应该能够将实例化的视图控制器分配给一个子类型的变量,但是我不知道Swift是否足够了解确切的知识,或者如何编写演员。 – Avi
如果你可以它仍然不会工作,演员将是一个谎言 – Wain