从多个故事板中对UIViewController进行子类化

时间:2017-04-03 17:30:11

标签: ios xcode

我想将视图控制器子类化,其中superClass和subClass位于两个单独的故事板中。 superClass通过它的故事板连接了IBOutlets,子类也是如此。

问题: 是否可以创建子类,以便从故事板中使用超类的IBOutlet连接? (AKA IBOutlets不是nil,而awakeFromNib被称为)

设定:

SuperClass是使用BaseStoryboard和IBOutlet UIView属性baseContainerView的BaseViewController。

SubClass是使用SpecialStoryboard的SpecialViewController

SpecialViewController继承自BaseViewController。

当前问题:

如果我从它的故事板(SpecialStoryboard)中实例化一个SpecialViewController实例,当调用viewDidLoad时,它的超类(BaseViewController)上的containerView属性为nil。是否可以从它的故事板中加载SpecialViewController的超类(BaseViewController)?

1 个答案:

答案 0 :(得分:2)

类支持继承,但场景不支持。

当您继承视图控制器时,它会继承其超类中存在的任何出口,但这些出口需要在您使用子类的场景中显式指定值。

场景指定其视图控制器的类,但视图控制器类没有链接"返回"到使用它的场景。有一个"多对一"场景和视图控制器类之间的关系。如果你问的是可能的,iOS将如何知道你想要使用视图控制器的潜在的许多场景中的哪一个"继承"从?

仅仅因为超类定义了出口foo并且你在某个场景中使用了超类,它并不意味着如果你使用foo将具有一些值,那么在一个场景中使用一个子类不同的场景(无论这些场景在哪个故事板中)。您需要在使用子类的场景中直接将对象分配给foo

相关问题