Как мне изменить главное меню в Какао?
У меня есть приложение какао с двумя типами окон, каждое из которых требует отдельного главного меню для отображения.
В моем MainMenu.xib у меня есть MainMenu по умолчанию. В Window1.xib у меня есть Window1, а в Window2.xib у меня есть Window2, и это MainMenu.
Когда у меня открывается первое окно, у меня есть меню по умолчанию, когда я открываю Window2, я получаю его меню.
Однако, когда я переключаюсь обратно в Window1, я все равно вижу меню Window2. Как сделать, чтобы отображаемое меню соответствовало окну ключа?
2 ответа
NSApplication имеет метод, - (void)setMainMenu:(NSMenu *)aMenu
, Вы можете передать ему ссылку на правильное меню в соответствующем контроллере окна, выполнив - (void)windowDidBecomeKey:(NSNotification *)notification
,
Имейте в виду, что может быть проще изменить только подменю, а не выгружать все главное меню, поскольку вам не нужно будет поддерживать две разные копии приложения, справки и других меню, которые не будут меняться между двумя окнами,
Как правило, не следует каждый раз заменять все главное меню. Он более совместим с Руководством по интерфейсу пользователя для простого отключения любых пунктов меню, которые не относятся к текущему окну. И если у вас действительно должен быть совершенно другой набор меню в строке меню, возможно, вам следует разделить эту часть вашего приложения на отдельное приложение.