基于文档的应用程序中的不同菜单栏

时间:2012-10-24 11:42:02

标签: cocoa menubar nsdocument

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

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

我想创建一个类似于XCode的'Editor'菜单的菜单,当焦点在文本窗口时显示一些项目,当焦点在IB文件上时显示完全不同的项目。

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

1 个答案:

答案 0 :(得分:2)

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

通过拖拽主菜单层次结构并在正确的位置分配单独的菜单(即[NSMenuItem setSubmenu:]reference))来切换主菜单的各个部分。您可以通过在这些菜单项中使用Interface Builder设置标签,然后使用[NSMenu itemWithTag:]reference)以编程方式查找它们,从而使您自己更轻松。