Como altero o menu principal no cacau?
-
21-08-2019 - |
Pergunta
Eu tenho um aplicativo de cacau com dois tipos de janelas, cada uma das quais requer um menu principal diferente a ser exibido.
No meu mainmenu.xib, tenho o mainmenu padrão. No window1.xib, eu tenho window1 e no window2.xib eu tenho window2 e é mainmenu.
Quando tenho a primeira janela aberta, tenho o menu padrão, quando abro a Window2, recebo o menu.
No entanto, quando volto para o Window1, ainda vejo o menu do Windows. Como faço para fazer o menu exibido seguir a janela da chave?
Solução
Nsapplicação tem um método, - (void)setMainMenu:(NSMenu *)aMenu
. Você pode passar uma referência ao menu correto no controlador de janela apropriado, implementando - (void)windowDidBecomeKey:(NSNotification *)notification
.
Lembre -se de que pode ser mais fácil alterar apenas o submenus em vez de trocar todo o menu principal, já que você não precisará manter duas cópias diferentes do aplicativo, ajuda e outros menus que não mudarão entre as duas janelas .
Outras dicas
Geralmente, você não deve substituir o menu principal inteiro sempre. É mais compatível com as diretrizes da interface humana para simplesmente desativar qualquer itens de menu que não se apliquem à janela atual. E se você realmente deve ter um conjunto de menus completamente diferente na barra de menus, talvez deva dividir essa parte do seu aplicativo em um aplicativo separado.