1

我对此很陌生,但我认为我想做的事情是有道理的。我有一个以纵向显示的 xib 和一个以横向显示的 xib。两种观点相似,但有一些不同之处。一些按钮、标签和文本字段是相同的。

当方向改变时,我可以显示一个并隐藏另一个 - 这不是问题。

基本上,我希望有一个地方可以处理所有常见的按钮单击响应或文本更改。当用户处于纵向模式并输入文本或选择按钮时,他们将更改为横向模式,相应的按钮和文本将被更新。

我尝试在界面构建器中添加一个 NSObject 并将其分配给一个新类,该类具有按钮和文本字段的出口和操作,但是当我与按钮交互时,我在 xcode 中收到“无法识别的选择器发送到实例”错误。

任何帮助都会很棒。

最好的,沃德

4

2 回答 2

6

您在 Interface Builder 中添加的对象在 XIB 加载时被实例化,您不能在多个 XIB 中拥有相同的对象。

您用来连接多个 XIB 的是您在每个 XIB 中看到的“文件所有者”对象。当您使用加载 XIB 时[NSBundle loadNibNamed:@"myXIB" owner:self],您作为所有者对象传入的内容最终将成为加载的 XIB 中的文件所有者,Cocoa 将连接您在其中的 IBOutlets 和 IBActions(确保设置文件所有者对象的正确类在界面生成器中)。

因此,您可以将横向视图的控制器对象设置为纵向视图 XIB 的所有者,并将所有 IBActions 放在该控制器中,在那里它们可以从两个 XIB 访问(通过一个控制器和另一个通过文件所有者) .

于 2009-12-19T20:11:29.107 回答
1

不要忘记 xib 不是模板——它们是冻干的对象。一个按钮与另一个按钮没有连接。

于 2009-12-19T19:58:45.360 回答