gpt4 book ai didi

iphone - View Controller 可以管理超过 1 个基于 nib 的 View 吗?

转载 作者:行者123 更新时间:2023-12-03 20:16:59 26 4
gpt4 key购买 nike

我有一个 VC 控制有 2 种模式的内容屏幕;普通模式和编辑模式。

我可以创建一个带有 2 个 View 的 VC,每个 View 都来自单独的 Nib 吗?

在 iPhone 上的许多情况下,您都有一个 VC 来控制关联的 View 。然后在按下按钮或其他事件,加载新的 VC 并且其 View 成为顶级 View 等。

但是在这种情况下,我想使用两种相同的模式对于VC来说,因为它们是密切相关的。所以我想要一个可以换入/换出 2 个 View 的 VC。

按照这里: How to load a UIView using a nib file created with Interface Builder

我发现我可以从 Nib 加载带有关联 View 的 VC,然后再加载与另一个 Nib 不同的 View ,并使该新 View 成为事件 View 。

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"EditMode" owner:self options:nil];
UIView *theEditView = [nibObjects objectAtIndex:0];
self.editView = theEditView;
[self.view addSubview:theEditView];

与主 Nib 一样,辅助 Nib 也有连接到 VC 的 socket 。当新 Nib 装入时, socket 均连接良好,一切正常。不幸的是当这个编辑然后 View 被删除,似乎没有任何优雅的方式来连接 socket 再次到原始 Nib 的(正常模式) View 。 Nib 装载和导出设置似乎是一次唯一的事情。

那么,如果您想要一个 VC 可以交换输入/输出 2 个 View 而不创建新的 VC,有哪些选项?

1) 您可以在代码中完成所有操作,但我想使用 nib,因为它使创建 UI 变得更简单。

2) 您的 VC 有 1 个 Nib ,只需使用 UIView 及其子类的隐藏属性隐藏/显示元素。

3) 如上所述加载新 Nib 。这对于新 Nib 来说很好,但是当您回到原来的 Nib 时,如何对 socket 进行排序。

4) 放弃并接受 VC 和 nib 之间的 1:1 比例。有一个用于普通模式的 Nib ,一个用于编辑模式的 Nib ,每种模式都有一个对公共(public)父类(super class)进行子类化的 VC。

最后,我选择了 4),它可以工作,但需要大量的额外工作,因为我有一个在正常模式下实例化的模型类,然后必须传递到编辑模式 VC,因为这两种模式需要访问模型。我还使用 NSTimer,并且必须在每种模式下启动和停止计时器。正是因为所有这些共享功能,我首先想要一个带有 2 个 Nib 的 VC。

最佳答案

我只需向您的原始 Nib 添加另一个 View ,并将其连接到另一个名为“editView”的 IBOutlet。

@interface TestViewController : UIViewController {
IBOutlet UIView *editView;
}
@end

alt text

然后你可以做一个 [self.view addSubview:theEditView];每当您需要显示它时。

关于iphone - View Controller 可以管理超过 1 个基于 nib 的 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694784/

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