1

我正在尝试创建一个两个视图、单个控制器应用程序,如下所示:我有两个 XIB。每个都有相同的文件所有者。

作为测试,我在每个 XIB 上放置了一个 UILabel。我已将文件所有者连接到每个 XIB 中的 UILabel。出口属性是一样的。

当我使用 loadNibNamed 实例化笔尖时,我还将“所有者”设置为文件所有者的实例,例如:

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,那么我可以正确更新和查看它们。似乎我只能从 File's Owner 的属性到每个 NIB 建立一个连接。

有任何想法吗?

4

3 回答 3

0

IBOutlet 只能指向一个对象。您将需要每个要使用的 IBOutlet 中的两个。

于 2010-09-07T16:41:53.930 回答
0

你想要的是一个 IBOutletCollection。这允许您将一个属性分配给多个 nib 元素,并同时讨论整个组。

于 2010-09-07T17:04:04.540 回答
0

这是非常古老的并且很少被观看,但我不禁注意到为什么这不起作用。您正在传递所有者的同一实例。创建文件所有者的两个实例,您可以有两个不同的标签值。事实上,您没有理由不能将整个项目中的所有插座都分配给一个 Object 类,尽管您可能不想这样做。要考虑的另一件事是您是否不应该在这里使用继承,通过创建一个超类,将所有公共插座连接到该类,然后连接一个具有唯一插座的子类。实际上,由于您要么必须通过 nib 标识符或与它们关联的类来区分你的 nib,我认为最好将单独的类关联起来并使用继承来覆盖它们之间的重叠。

于 2015-04-15T16:44:10.290 回答