重用UI(xib文件)

时间:2013-01-12 13:30:54

标签: ios objective-c xcode cocoa-touch

在我的应用中,我有两个屏幕 - 首先显示用户个人资料,第二个 - 编辑个人资料信息。它们很相似。我已经完成了第一个屏幕的xib文件。

在第二个屏幕上重复使用它的最佳方法是什么?

4 个答案:

答案 0 :(得分:3)

您应该将相关元素封装为自定义视图类。您可以通过使用代码而不仅仅是xib创建视图来解决此问题,我建议您这样做。

但是,如果你更喜欢使用xib,你可以创建一个模拟你想要重用的东西。然后在你的视图控制器中调用一些这样的代码:

UIView* aView = [UIView alloc] initWithFrame .....];
[[NSBundle mainBundle] loadNibNamed:@"MyReusableComponent" owner:aView options:nil];
UILabel* someLabel = aView.injectedLabel; //this is alive after loading the xib
[self.view addSubView:aView];

创建xib时,需要将Files Owner设置为一个类,该类将响应将要注入的属性的setter。 (例如你的新视图类)。这样您就可以连接引用。

有关更多信息,请查看Apple从xib加载表格单元格的示例 - 这是相同的技术。当您加载xib并指定所有者时,它会将xib中的值注入所有者,在本例中为自定义视图。

enter image description here

答案 1 :(得分:0)

您可以使用UITextField s(而非UILabel s,您可能已经逻辑上用于演示),您可以更改外观,并打开/关闭enabled。作为一个最小的例子:

显示

self.textField.borderStyle = UITextBorderStyleNone;
self.textfield.enabled     = NO;

修改

self.textField.borderStyle = UITextBorderStyleBezel;
self.textfield.enabled     = YES;

你当然可以在外表上做更多的事情,而不仅仅是这些基础知识。

答案 2 :(得分:0)

你是说你进入视图控制器的编辑模式并重用那些你创建的元素?

Enabling Edit Mode in a View Controller

答案 3 :(得分:-1)

在Xcode中:转到文件>重复。

然后将复制的xib命名为“editProfile”,这将为您提供可以根据需要调整的第一个xib的副本