我正在尝试创建一个两个视图,单个控制器应用程序,如下所示:我有两个XIB。每个人都有相同的文件所有者。
作为测试,我在每个XIB上放置了一个UILabel。我已将文件所有者连接到每个XIB中的UILabel。出口属性是相同的。
当我使用loadNibNamed实例化nib时,我还将'owner'设置为File的Owner的实例,例如:
nib=[[NSBundle mainBundle] loadNibNamed:@"ONE" owner:OWNER options:nil];
nib=[[NSBundle mainBundle] loadNibNamed:@"TWO" owner:OWNER options:nil];
现在,在OWNER,如果我打电话
[myLabel setText:@"Hello World"];
我只在nib TWO中看到标签更新。
如果我创建了每个NIB独有的其他UILabel,那么我可以正确地更新和查看它们。似乎我只能从文件所有者的属性到每个NIB有一个连接。
有什么想法吗?
答案 0 :(得分:0)
IBOutlet只能指向一个对象。您将需要两个想要使用的IBOutlet。
答案 1 :(得分:0)
您想要的是IBOutletCollection。这允许您将属性分配给多个nib元素,并一次性讨论整个组。
答案 2 :(得分:0)
这是非常古老的,并没有太多的看法,但我无法帮助,但请注意为什么这不起作用。您正在传递所有者的同一个实例。制作文件所有者的两个实例,您可以拥有两个不同的标签值。没有理由你不能将整个项目中的所有商店分配给一个Object类,尽管你可能不想这样做。要考虑的另一件事是你是否应该在这里使用继承,通过创建一个超类,将所有公共出口连接到该类,然后是一个具有唯一出口的子类。实际上,由于你要么必须通过nib标识符或与它们相关联的类来区分你的nib,我认为将单独的类关联起来并使用继承来覆盖它们之间的重叠是更好的做法。 p>