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