从Storyboard转换为子类

时间:2015-12-01 09:22:26

标签: ios swift

想象一下,我有一个BaseViewController。然后我有2个场景,New和Edit,其中两个场景共享相同的UI和大部分逻辑。所以我创建了类NewViewController和EditViewController,子类化BaseViewController。当我尝试从故事板中实例化“BaseViewController”时会出现问题,因为我想指定哪个实现。

if isEdit { 
    storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! EditViewController 
} else {
   storyboard.instantiateViewControllerWithIdentifier("baseVCIdentifier") as! NewViewController 
}

然后我收到一个错误:      无法将“Test.BaseViewController”类型的值(0x10ee5e0f0)转换为“Test.EditViewController”(0x10ee5f000)。

我不想在故事板上同时拥有两个ViewController,因为我不想重做相同的UI 2次。

1 个答案:

答案 0 :(得分:1)

你做不到。而不是子类创建“交互管理器”类或状态管理器类。然后,基本视图控制器将被提供作为segue的一部分的管理器实例,并且它将所有UI交互转发给管理器以进行处理。然后根据需要在故事板中有一个VC,您可以提供新的或编辑管理器。管理器还可以具有视图控制器不关心的特定实例变量。