将菜单项绑定到第一响应者的属性

时间:2013-04-17 17:08:52

标签: cocoa interface-builder menuitem cocoa-bindings nsdocument

我有一个基于文档的应用程序。

在我的文档课程中,

  • 我有一个BOOL属性:isActionPossible
  • 我也有IBAction:- (IBAction) doTheAction:(id)sender

现在,在MainMenu.xib中,我想将菜单项连接到操作。 当您知道Interface Builder中的First Responder“代表”您应用程序的活动文档时,这很容易。

但是,如何将此项目菜单的可用性(“启用属性”)与活动文档的BOOL属性isActionPossible绑定?

事实上,在提议的清单中,没有“第一响应者”。

1 个答案:

答案 0 :(得分:3)

两种选择:

  1. 您可以实施菜单验证,请参阅Apple's docs。简而言之,在显示菜单之前,系统向处理该动作的同一对象发送验证请求,该对象包括第一响应者。您只需向文档类添加一个返回BOOL的方法;在您的情况下,您的isActionPossible财产。
  2. 使用currentDocument NSDocumentController属性返回与主窗口关联的文档。然后,您可以使用绑定绑定<Document Controller>.currentDocument.isActionPossible。这种方法更为通用,因为您可以将标签内容绑定到值等,并将其用于菜单绑定。