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

Posted

技术标签:

【中文标题】多个文档同时打开,每个文档具有不同的菜单项状态【英文标题】:Multiple documents open at the same time, each with different menu item states 【发布时间】:2010-11-04 22:41:39 【问题描述】:

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

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

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

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

@interface MyDocument : NSDocument 
  SomeViewController *myCustomizedTextViewController;

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

【问题讨论】:

感谢这个问题,我在启动我的应用程序时想知道完全相同的事情。 【参考方案1】:

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

【讨论】:

这么简单,谢谢!我完全想多了,并考虑了 NSWindowDelegate 方法和其他***解决方案。我已经阅读了 NSUserInterfaceItemValidations 文档并且完全错过了意图。现在就像做梦一样,干杯:)

以上是关于多个文档同时打开,每个文档具有不同的菜单项状态的主要内容,如果未能解决你的问题,请参考以下文章

用java做一个窗口

mfc 单文档 多文档 对话框 区别

MFC应用程序类型

Android:Searchview甚至打开其他具有不同ID的菜单项

在文档库中添加自定义菜单项时的 SharePoint 问题

如果列表项打开/悬停,则父链接必须具有不同的颜色