我有一个带有两种类型窗口的可可应用程序,每种窗口都需要显示不同的主菜单。
在我的MainMenu.xib中,我有默认的MainMenu。在Window1.xib中我有Window1,在Window2.xib中我有Window2,它是MainMenu。
当我打开第一个窗口时,我有默认菜单,当我打开Window2时,我会看到它的菜单。
然而,当我切换回Window1时,我仍然看到Window2的菜单。如何使显示的菜单跟随关键窗口?
答案 0 :(得分:12)
通常,您不应每次都替换整个主菜单。它更符合人机界面指南,只是禁用任何不适用于当前窗口的菜单项。如果你真的应该在菜单栏中有一套完全不同的菜单,也许你应该将应用程序的那一部分拆分成一个单独的应用程序。
答案 1 :(得分:5)
NSApplication有一个方法- (void)setMainMenu:(NSMenu *)aMenu
。您可以通过实现- (void)windowDidBecomeKey:(NSNotification *)notification
将参考传递给相应窗口控制器中的正确菜单。
请记住,只更改子菜单而不是交换整个主菜单可能更容易,因为您不必维护应用程序,帮助和其他菜单之间不会发生变化的两个不同副本两个窗口。