IOS:是否可以将一个故事板视图控制器绑定到几个不同的类?

时间:2012-11-13 23:30:06

标签: objective-c ios xcode storyboard

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

[self.storyboard instantiateViewControllerWithIdentifier:]

背景:我以前在故事板上有几个视图控制器几乎相同。实际上,它们各自绑定的自定义类也非常相似。为了清理它,我将自定义类重构为一个基类和几个子类。然后我从故事板中删除了所有类似的视图控制器,只剩下一个我已经绑定到我的基类。然后我打电话给:

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

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

3 个答案:

答案 0 :(得分:2)

这是不可能的。只是因为你说MySubclass * object =某些东西并没有神奇地将对象转换为MySubclass对象。它存储在故事板中,包含在故事板编译时分配的任何类。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

正如guylegend所写。 Apple不支持这样做的方式。有许多解决方法,例如与代表,但我终于找到了答案并回答了另一个话题。希望能帮助到你! https://stackoverflow.com/a/32103618/1943053