4

我知道可以将自定义视图控制器类附加到情节提要上的几个不同的视图控制器,但可以在另一个方向上完成吗?也就是说,根据情况,我想将不同的自定义类绑定到情节提要上的单个视图控制器,该控制器将使用以下方式实例化:

[self.storyboard instantiateViewControllerWithIdentifier:]

背景:我的故事板上曾经有几个几乎相同的视图控制器。事实上,它们各自绑定的自定义类也非常相似。为了解决这个问题,我将自定义类重构为一个基类和几个子类。然后我从情节提要中删除了所有类似的视图控制器,只留下一个绑定到我的基类的视图控制器。然后我打电话给:

MySubclass* mySubclass = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardControllerBoundToBaseClass"];

不幸的是,我的子类代码被忽略了,只运行了基类代码。有谁知道如何在不复制情节提要上的视图控制器并将每个视图控制器绑定到不同的子类的情况下使其工作?

4

3 回答 3

2

这是不可能的。仅仅因为您说 MySubclass *object = something 并不会神奇地将 object 转换为 MySubclass 对象。它存储在情节提要中,并在情节提要编译时分配了任何类。

于 2012-11-13T23:39:58.463 回答
1

我认为我可以通过使用委托/代理模型在情节提要上重用视图控制器,而不是使用子类化。更具体地说,我可以将故事板的视图控制器绑定到一个自定义类,该类将其所有方法/事件委托给其他类来处理。这不像子类化那么优雅,但至少我可以让我的故事板更精简,而不必保留几乎相同的视图控制器的多个副本。另外,我不需要复制这些控制器的每个副本的未来更改来启动。

于 2012-11-15T01:24:55.327 回答
0

正如盖伊传奇所写。苹果不支持这样做的方式。有很多解决方法,例如与代表,但我终于找到了答案并在另一个主题中回答。希望能帮助到你! https://stackoverflow.com/a/32103618/1943053

于 2015-08-19T19:10:06.160 回答