在基于文档的应用程序中连接菜单项

Zak*_*411 13 cocoa objective-c nsmenuitem

我已经就这个话题问了几个问题,并没有真正得到关于如何做到的真实答案(它实际上收到了"Tumbleweed Badge"大声笑).

我有一个基于文档的应用程序(意味着Menu.Xib与MyDocument.Xib分开).

假设我想添加一个'Bold'按钮或Check Spelling按钮(Menu.xib中列出的项目(在格式>字体等下)到MyDocument(主界面).我无法弄清楚如何执行此操作.

任何帮助将不胜感激(如果它有效,我将立即给予答案,这已经让我困扰了几个星期).

我尝试将字体管理器添加到MyDocument.Xib并以此方式连接,但Bold按钮仅启用,它不会禁用.另外,无法通过字体管理器激活拼写检查等.

必须有更好的方法来做到这一点.

Apple文档非常模糊.

ugh*_*fhw 17

这正是IB中First Responder对象的用途.它是连接操作的代理对象.发送给它的任何动作消息都将沿着响应者链传递给接受它们的第一个对象.对于基于文档的应用程序,响应者链包括当前文档.因此,要将菜单项连接到您的文档:

  1. 如果需要,将操作添加到First Responder.您可以从IB的检查员窗口执行此操作.
  2. 将操作连接到First Responder,就像它是普通对象一样.
  3. 在文档中实现操作方法.

如果需要以编程方式向第一个响应者添加消息,请将对象的目标设置为nil.