2

我有一个基于 NSDocument 的可可应用程序,我有两种类型的文档。每种文档类型都有自己的菜单项,所有项都在 mainmenu.xib 中定义。根据 Apple UI 指南中的定义,与文档类型无关的菜单项显示为灰色。

我有太多的菜单项,所以我只想显示每个文档类型的相关项目,另一个问题是由键绑定创建的,对于文档类型 A,特定的键绑定与菜单项相关联,但对于文档类型 B,相同的键绑定与另一个菜单项相关联,但这是不可能的,因为 XCode 检测到已使用相同的键并且它(正确地)从先前的项目定义中删除。

我想创建一个类似于 XCode 的“编辑器”菜单的菜单,当焦点位于文本窗口时它会显示一些项目,而当焦点位于 IB 文件上时会显示完全不同的项目集。

有最佳实践吗?例如拆分菜单。如何轻松创建类似于 XCode 的“编辑器”菜单的菜单?哪个 API 可可让我们去做?

4

1 回答 1

2

您可以在 MainMenu.xib 中创建单独的菜单,并从 App Controller 为它们创建出口。然后,当您的文档获得焦点时(参见windowDidBecomeMain(参考)),您告诉 App 控制器切换主菜单的相关部分。

切换主菜单的部分是通过拖网主菜单层次结构并在正确的位置分配单独的菜单(即[NSMenuItem setSubmenu:]参考))来完成的。您可以通过在这些菜单项中设置标签、使用 Interface Builder,然后使用[NSMenu itemWithTag:]( reference ) 以编程方式找到它们,从而使自己更容易做到这一点。

于 2012-10-24T11:56:39.887 回答