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