2012-10-24 45 views
2

我有一个基于NSDocument的可可应用程序,我有两种类型的文档。 每种文档类型都有自己的菜单项,所有项目都在mainmenu.xib中定义。 正如Apple UI准则中所定义的,与文档类型无关的菜单项显示为灰色。基于文档的应用程序中的不同菜单栏

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

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

是否有最佳做法?例如分割菜单。 如何轻松创建类似于XCode'Editor'菜单的菜单? 哪个API可可让我们做到这一点?

回答

2

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

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

+0

非常感谢!我在我的DocumentController中添加了插座,并在NSWindowControllers上为两个​​文档实现了windowDidBecomeMain,并且一切正常。 – dafi

+0

@dafi非常好。 – trojanfoe

相关问题