gpt4 book ai didi

ios - 如何让高级 Controller 加载 View Controller

转载 作者:行者123 更新时间:2023-11-28 22:55:10 25 4
gpt4 key购买 nike

我有一个高级 Controller 类,负责管理多个类和驱动状态机。

状态逻辑的一部分涉及几个不同屏幕的临时显示,每个屏幕都有一个专用的 View Controller ,高级 Controller 创建这些其他 Controller 类,并在必要时将它们呈现为模态视图 Controller 。

然而,其中一个 View Controller 非常简单,它有一个按钮和一些可以随着状态的进行而改变的文本。高级 Controller 是知道在什么阶段显示什么文本的类,它还需要知道何时按下按钮。

因此, View Controller 需要提供一个 API,高级 Controller 可以调用该 API 来设置文本,而且高级 Controller 需要成为 View Controller 的委托(delegate),以便在按钮按下时回调被按下。这似乎是我想删除的不必要的管道。

所以我可以将 View Controller 中的导出和操作移动到高级 Controller 中,这样就不需要这个管道了。但是 View Controller 中什么也没有留下(它是从 Nib 实例化的)。所以我想完全摆脱它。

然后一旦它消失了,我就计​​划在高级 Controller 中使用它:

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) File's Owner 应该设置成什么?b) IB内的view可以设置成什么?

请注意,高级 Controller 已经继承自另一个类,因此我无法从 UIViewController 派生它,因此它没有连接到 IB 中的 View 的 View 属性。

有没有一种简单的方法可以将 xib 内容连接到在高级 View Controller 中创建的 UIViewController?

最佳答案

View 及其 Controller 是“模块化元素”因此,如果 View 有按钮,则按钮的目标应该是 View 的 Controller ,而不是父 View 。 View 的 Controller ,认为 parent /其他人会对按钮事件感兴趣,应该定义一个 parent /其他人可以参与的委托(delegate)接口(interface)或通知接口(interface)。

在您的情况下,通过“移除不必要的管道”,您 1) 远离了“模块化元素”,并且 2) 制造了困难,导致您提出与移除管道相关的问题。

最好只使用标准模式。

关于ios - 如何让高级 Controller 加载 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com