【问题标题】:IOS: is it possible to bind one story board view controller to several different classes?IOS:是否可以将一个故事板视图控制器绑定到几个不同的类?
【发布时间】:2012-11-02 11:15:37
【问题描述】:

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

[self.storyboard instantiateViewControllerWithIdentifier:]

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

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

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

【问题讨论】:

标签: objective-c ios xcode storyboard


【解决方案1】:

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

【讨论】:

  • 谢谢!我害怕那个。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 2013-01-28
      • 2019-12-17
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2015-05-02
      • 2014-06-19
      • 1970-01-01
      相关资源
      最近更新 更多