具有多个nib文件的单个视图控制器?

8
我正在尝试构建一个可以“换肤”的视图控制器,即具有多个外观或个性,但使用单个控制器。每个视图将具有相同的按钮等,但我希望能够将每个nib文件(皮肤)加载到同一个视图控制器中。我可以创建多个nib文件,但我不知道如何连接按钮和操作。我可以为多个nib文件指定相同的“file's owner”吗?(如何实现?)
这可以做到吗?
2个回答

8
这是完全可能的。只需创建新的nib文件,在Interface Builder中将文件所有者设置为该类。然后,您可以像以前一样连接您的输出口和操作。从您的代码中,只需在initWithNibName:方法中指定正确的nib文件即可。
如果唯一的更改是外观上的,您可能最好直接在代码中进行这些更改,但您提出的方法也完全可行。

谢谢!(愚蠢的后续问题:我如何设置文件所有者?) - Billy Pilgrim
这里有一个视频:http://vimeo.com/5105309,在前25秒左右展示了如何操作。基本上,使用Xcode,将一个新的nib文件添加到你的项目中,并双击打开它在Interface Builder中。选择File Owner对象(黄色立方体),然后打开Identity Inspector(工具> Identity Inspector),在“Class Identity”部分设置类为你的View Controller类。然后,你就可以像以前一样连接你的outlets和actions了。 - theChrisKent

0

如果你直接将视图从nib文件中复制并粘贴到同一个nib文件中,那么就可以更轻松地完成它,这样你就可以在一个nib文件中拥有两个分离的视图。

example pic

然后,您可以在加载nib时像这样在视图之间进行切换:

NSArray *temp = [[NSBundle mainBundle] loadNibNamed:@"Widget" owner:self options:nil];
Widget *w = [temp objectAtIndex:0]]; // or 1 or 2 etc to get the different views

这将复制您所有的按钮连接等,因此您可以随意调整副本而无需再次设置所有内容


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接