【发布时间】:2012-06-09 05:47:56
【问题描述】:
我有一个高级控制器类,负责管理多个类并驱动状态机。
部分状态逻辑涉及几个不同屏幕的临时显示,每个屏幕都有一个专用的视图控制器,高级控制器创建这些其他控制器类,并在必要时将它们呈现为模态视图控制器。
然而,其中一个视图控制器非常简单,它有一个按钮和一些文本,这些文本可以随着状态的进展而改变。高级控制器是知道在什么阶段显示什么文本并且需要知道按钮何时被按下的类。
因此,视图控制器需要提供一个 API,高级控制器可以调用该 API 来设置文本,并且高级控制器还需要是视图控制器的委托,以便可以在按下按钮时回调它被按下。 这似乎是我想移除的不必要的管道。
所以我可以将视图控制器中的出口和操作移动到高级控制器中,这样就不需要这种管道了。但是视图控制器中什么都没有了(它是从一个笔尖实例化的)。所以我想完全摆脱它。
然后,一旦它消失了,我就打算在高级控制器中使用它:
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"TheNib" bundle:nil];
or should it be:
UIViewController *vc = [[UIViewController alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"TheNib" owner:vc options:nil];
[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController: self.vc animated: NO completion:nil];
但是应该如何设置 IB 以实现这一目标 - 特别是 a)文件的所有者应该设置为什么? b) IB 中的视图可以设置为什么?
请注意,高级控制器已经从另一个类继承,因此我无法从 UIViewController 派生它,因此它没有视图属性来连接到 IB 中的视图。
有没有一种简单的方法可以将 xib 内容连接到在高级视图控制器中创建的 UIViewController?
【问题讨论】:
标签: ios