Pergunta

Sou novo na programação OBJ-C/Cacau e estou tendo um problema tentando adicionar dinamicamente itens de menu a uma instância do NSMENU e ter o seletor de ação de itens já definido após a inserção.

Eu posso adicionar bem os itens de menu dinâmico, mas o seletor de ação não aciona quando o item é clicado pelo menu.

A primeira linha abaixo é a linha de código que estou usando para adicionar o item de menu. Você pode definir que estou definindo a ação: (SEL) Aseletor para a função "OpenChowaveSurl".

Esta função está no mesmo arquivo de classe do controlador e incluí a definição de função abaixo.

Estou apenas chamando a sintaxe do seletor errado ou algo? Ou qual é o truque para obter o item de menu para chamar um seletor quando clicado?


[statusMenu insertItemWithTitle:[NSString stringWithFormat:@"%d - %@", convo.newMessagesCount, convo.ewName] action:@selector(openEchowavesURL:) keyEquivalent:@"" atIndex:0];

- (void)openEchowavesURL:(id)sender {
    // function details here
}
Foi útil?

Solução

Se você deseja que a ação seja acionada contra seu objeto, você deve especificar um alvo para o novo Nsmenuitem:

NSMenuItem *item = [statusMenu insertItemWithTitle:[NSString stringWithFormat:@"%d - %@", convo.newMessagesCount, convo.ewName] action:@selector(openEchowavesURL:) keyEquivalent:@"" atIndex:0];
[item setTarget:self]; // or whatever target you want

Se você não fizer isso, então o NSResponder A cadeia será passada até que um objeto responda ao seletor.

Outras dicas

As ações precisam de um alvo ou são enviadas para o NIL e, em seguida, se aplicam novas regras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top