我有一个Document.xib和一个MainMenu.xib,以及一个MainController类。我通过将NSObject从对象库拖到Document.xib的实例树并将属性中的类设置为MainController,将一个MainController实例添加到Document.xib。我添加了一个按钮并将其连接到MainController提供的其中一个操作。
到目前为止,这么清楚。现在我基本上想从菜单项调用相同的动作。显然,我不能只将MainController的另一个实例添加到MainMenu.xib中,因为我最终会得到两个实例。每个文档应该只有一个,菜单项应该调用活动文档的MainController中的操作。我该怎么做?
答案 0 :(得分:2)
这是First Responder代理图标的用途。您可以将菜单项连接到First Responder代理,并且消息将在响应程序链中向上发送,直到它们到达处理消息的对象。您的文档以及视图和其他对象将参与响应者链,因此如果链中较早的对象尚未这样做,则将有机会处理该消息。响应者链概念还确保将消息传递到活动文档 - 如果您打开了多个文档,您自然希望菜单命令由用户正在处理的文档处理。
因此,只需将First Responder图标作为菜单项的目标,就会发生正确的事情。