2

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

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

一个人如何干净地做到这一点?我用谷歌搜索,但似乎没有预定义的“开箱即用”方式来做到这一点。如果 NSDocument 有某种“didRegainFocus”类型的方法可以添加这样的逻辑,那就太好了。

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

@interface MyDocument : NSDocument {
  SomeViewController *myCustomizedTextViewController;
}

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

4

1 回答 1

2

让菜单项的目标实现validateUserInterfaceItem:启用/禁用它们的方法。有关详细信息,请参阅用户界面验证参考。

于 2010-11-05T04:02:45.343 回答