【问题标题】:Different menubar in document based apps基于文档的应用程序中的不同菜单栏
【发布时间】:2012-10-24 19:56:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: cocoa menubar nsdocument


    【解决方案1】:

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

    切换主菜单的各个部分是通过拖网主菜单层次结构并在正确的位置分配单独的菜单(即[NSMenuItem setSubmenu:] (reference))来完成的。您可以通过在这些菜单项中设置标签、使用 Interface Builder、然后使用 [NSMenu itemWithTag:] (reference) 以编程方式查找它们来简化此操作。

    【讨论】:

    • 非常感谢!我在 DocumentController 中添加了插座,并在 NSWindowControllers 上为两个文档实现了 windowDidBecomeMain,一切正常
    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多