Вопрос

У меня есть какао-приложение с окнами двух типов, каждое из которых требует отображения отдельного главного меню.

В моем MainMenu.xib у меня есть MainMenu по умолчанию.В Window1.xib у меня есть Window1, а в Window2.xib - Window2 и это MainMenu.

Когда у меня открыто первое окно, у меня есть меню по умолчанию, когда я открываю Window2, я получаю его меню.

Однако, когда я снова переключаюсь на Window1, я все еще вижу меню Window2.Как сделать так, чтобы отображаемое меню следовало за ключевым окном?

Это было полезно?

Решение

NSApplication имеет метод - (void)setMainMenu:(NSMenu *)aMenu.Вы можете передать ему ссылку на правильное меню в соответствующем оконном контроллере, реализовав - (void)windowDidBecomeKey:(NSNotification *)notification.

Имейте в виду, что может быть проще изменить только подменю, чем заменять все главное меню, так как вам не придется поддерживать две разные копии приложения, справки и других меню, которые не будут меняться междудва окна.

Другие советы

Как правило, не следует заменять все главное меню каждый раз.Это больше соответствует Руководству по человеческому интерфейсу, чтобы просто отключить любые пункты меню, которые не применяются к текущему окну.И если вам действительно нужен совершенно другой набор меню в строке меню, возможно, вам следует разделить эту часть вашего приложения на отдельное приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top