多个文档同时打开,每个文档具有不同的菜单项状态

时间:2010-11-04 22:41:39

标签: cocoa macos menu menuitem nsdocument

在基于Cocoa文档的应用程序中,保持菜单栏中菜单项状态与当前可见文档同步的最佳方法是什么?

例如,假设您有一个带标尺视图的文档,可以通过“显示标尺”(关闭状态)和“隐藏标尺”(开启状态)菜单项隐藏/显示。用户同时打开两个文档。他/她将统治者隐藏在一个文档中,但没有隐藏在另一个文档中。当用户在文档之间移动时,菜单项应该反映该文档的状态,而不是整个应用程序的状态。

如何干净利落地做到这一点?我已经google了一下,但似乎没有预定义的“开箱即用”的方式来做到这一点。如果NSDocument有某种“didRegainFocus”类型的方法可以添加这样的逻辑,那将是很好的。

我的实际实现有点棘手,因为它实际上是我的NSDocument中的NSViewController来处理这些特定的菜单项。

@interface MyDocument : NSDocument {
  SomeViewController *myCustomizedTextViewController;
}

MyDocument是当前有效的文档时,我需要myCustomizedTextViewController中的方法来确保应用程序主菜单中几个NSMenuItem的状态。一个是真正的统治者。另一个是类似的临时设置。

1 个答案:

答案 0 :(得分:1)

让菜单项的目标实现validateUserInterfaceItem:方法以启用/禁用它们。有关详细信息,请参阅User Interface Validation参考。