Xcode:跨 XIB 文件的 Outlets 和 Actions

Posted

技术标签:

【中文标题】Xcode:跨 XIB 文件的 Outlets 和 Actions【英文标题】:Xcode: Outlets and Actions across XIB files 【发布时间】:2013-07-24 12:22:33 【问题描述】:

我有一个 Document.xib 和一个 MainMenu.xib,以及一个 MainController 类。我通过将 NSObject 从对象库拖到 Document.xib 的实例树并将属性中的类设置为 MainController,将 MainController 的实例添加到 Document.xib。我添加了一个按钮并将其连接到 MainController 提供的操作之一。

到目前为止,很清楚。现在我基本上想从菜单项中调用相同的操作。显然,我不能只将 MainController 的另一个实例添加到 MainMenu.xib,因为我最终会得到两个实例。每个文档应该只有一个,并且菜单项应该调用活动文档的 MainController 中的操作。我该怎么做?

【问题讨论】:

【参考方案1】:

这就是 First Responder 代理图标的用途。您可以将菜单项连接到 First Responder 代理,消息将沿响应者链向上发送,直到它们到达处理消息的对象。您的文档以及视图和其他对象将参与响应者链,因此将有机会处理消息,前提是链中较早的对象尚未这样做。响应者链概念还确保消息被传递到活动文档——如果您打开了多个文档,您自然希望菜单命令由用户正在处理的文档处理。

因此,只需将 First Responder 图标作为您的菜单项的目标,就会发生正确的事情。

【讨论】:

谢谢。这似乎是正确的答案。但是,如果我这样做,菜单项将显示为灰色。 好的,还有另一个错误导致它无法工作。现在可以了,谢谢!

以上是关于Xcode:跨 XIB 文件的 Outlets 和 Actions的主要内容,如果未能解决你的问题,请参考以下文章

此类与键视图的键值编码不兼容

iOS - Interface Builder Outlets 未初始化

了解 Interface Builder 中的 Outlets

低版本的xcode打开xcode8上的xib错误

将 xib 文件迁移到 Xcode 4.4

Xcode 4.3 停止构建 XIB 文件