1

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

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

4

1 回答 1

2

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

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

于 2013-07-24T12:32:54.040 回答