我有一个高级控制器类,负责管理多个类并驱动状态机。
状态逻辑的一部分涉及几个不同屏幕的临时显示,每个屏幕都有一个专用的视图控制器,高级控制器创建这些其他控制器类,并根据需要将它们呈现为模态视图控制器。
然而,其中一个视图控制器非常简单,它有一个按钮和一些文本,这些文本可以随着状态的进展而改变。高级控制器是知道在什么阶段显示什么文本以及它需要知道何时按下按钮的类。
因此,视图控制器需要提供一个 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?