3

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

我可以创建一个具有 2 个视图的单个 VC,每个视图都来自不同的 nib?

在 iphone 上的许多情况下,您都有一个控制关联视图的 VC。然后在按下按钮或其他事件时,加载一个新的 VC,它的视图成为顶级视图等。

但在这种情况下,我有 2 种模式要使用同一个 VC,因为它们密切相关。所以我想要一个可以换入/换出 2 个视图的 VC。

按照这里: 如何使用使用 Interface Builder 创建的 nib 文件加载 UIView

我发现我可以从一个 nib 加载一个带有关联视图的 VC,然后再从另一个 nib 加载一个不同的视图,并使这个新视图成为活动视图。

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

辅助笔尖的插座与主笔尖一样连接到 VC。加载新笔尖后,所有插座都连接良好,一切正常。不幸的是,当这个编辑视图被删除时,似乎没有任何优雅的方法可以让插座从原始笔尖再次连接到(正常模式)视图。笔尖加载和插座设置似乎只有一次。

那么,如果你想要一个 VC 换入/换出 2 个视图而不创建新的 VC,有哪些选择?

1) 你可以用代码做所有事情,但我想使用 nib,因为它使创建 UI 变得更简单。

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

3) 如上所述加载一个新的笔尖。这对新笔尖来说很好,但是当你回到原来的笔尖时,你如何对插座进行排序。

4) 放弃并接受 VC 和 nib 之间的 1:1。正常模式有一个 nib,编辑模式有一个 nib,每种模式都有一个 VC,它是一个公共超类的子类。

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

4

1 回答 1

0

我只想在你的原始笔尖上添加另一个视图,然后将它连接到另一个名为“editView”的 IBOutlet。

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

替代文字

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

于 2010-04-23T01:21:05.847 回答