如何将单个故事板 uiviewcontroller 用于多个子类

2023-11-24

假设我有一个故事板,其中包含UINavigationController作为初始视图控制器。它的根视图控制器是UITableViewController,即BasicViewController。它有IBAction连接到导航栏的右侧导航按钮

从那里我想使用故事板作为其他视图的模板,而无需创建额外的故事板。假设这些视图将具有完全相同的界面,但具有类的根视图控制器SpecificViewController1 and SpecificViewController2哪些是子类BasicViewController.
这两个视图控制器将具有相同的功能和界面,除了IBAction method.
它会像下面这样:

@interface BasicViewController : UITableViewController

@interface SpecificViewController1 : BasicViewController

@interface SpecificViewController2 : BasicViewController

我可以做这样的事情吗?
我可以实例化故事板吗BasicViewController但有根视图控制器来子类化SpecificViewController1 and SpecificViewController2?

Thanks.


很好的问题 - 但不幸的是只有一个蹩脚的答案。我认为目前不可能执行您建议的操作,因为 UIStoryboard 中没有初始化程序允许覆盖与初始化时故事板中的对象详细信息中定义的故事板关联的视图控制器。在初始化时,stoaryboard 中的所有 UI 元素都链接到视图控制器中的属性。

默认情况下,它将使用故事板定义中指定的视图控制器进行初始化。

如果您试图重用在故事板中创建的 UI 元素,它们仍然必须链接或关联到视图控制器使用它们的属性,以便它们能够“告诉”视图控制器有关事件的信息。

复制故事板布局并不是什么大问题,特别是如果您只需要 3 个视图的类似设计,但是如果您这样做,则必须确保清除所有先前的关联,否则在尝试时会崩溃与前一个视图控制器通信。您将能够在日志输出中将它们识别为 KVO 错误消息。

您可以采取以下几种方法:

  • 将 UI 元素存储在 UIView 中 - 在 xib 文件中,并从基类实例化它,并将其添加为主视图中的子视图,通常是 self.view。然后,您只需使用故事板布局,其中基本空白的视图控制器在故事板中保留其位置,但为它们分配了正确的视图控制器子类。因为他们将从基地继承,所以他们会得到这样的观点。

  • 在代码中创建布局并从基本视图控制器安装它。显然,这种方法违背了使用故事板的目的,但可能是您的情况的方法。如果应用程序的其他部分可以从故事板方法中受益,那么如果合适的话,可以在这里或那里进行一些偏离。在这种情况下,就像上面一样,您只需使用分配了子类的银行视图控制器,并让基本视图控制器安装 UI。

如果苹果想出一种方法来实现您的建议,那就太好了,但是将图形元素与控制器子类预先链接的问题仍然是一个问题。

新年快乐! 一切顺利

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将单个故事板 uiviewcontroller 用于多个子类 的相关文章

随机推荐