Pergunta

Como os documentos dizem que é impossível adicionar dois itens de menu ao NSpopupButton se ambos tiverem o mesmo título. Eu estava tentando adicionar itens de menu ao [Menu PopupButton], mas sem sorte. Eu também estava tentando criar um novo menu, adicionar itens a ele e depois usar [PopUpButton Setmenu: Newmenu], mas não. O menu sempre exibe apenas um item por nome.

Mas eu sei que deve ser possível, se você tentar criar uma lista de reprodução inteligente no iTunes, poderá selecionar a "Lista de reprodução" no botão pop -up esquerdo "=" do meio, e o direito segurará itens de menu para cada lista de reprodução em iTunes, mesmo que eles tenham o mesmo título. Então, como eles fazem isso?

Foi útil?

Solução

Eu tinha o problema exato e ele foi resolvido facilmente. Ao invés de usar NSPOPUPBUTON Métodos como –AdditemWithtitle: Para manipular os itens do botão, adicionei um NsarrayController e adicionou os itens ao controlador da matriz. Em seguida, usei as ligações para ligar o controlador e o botão pop -up e agora ele mostra itens com os mesmos títulos.

Para fazer as ligações:

  1. Adicione um NsarrayController em ib.
  2. Colocou o NSPOPUPBUTON ligações para "Contente" para a organização do controlador com o "Chave do controlador" ser "OrganizedObjects"
  3. Colocou o NSPOPUPBUTON ligações para "Índice selecionado" para a organização do controlador com o "Chave do controlador" ser "SelectionIndex"
  4. Opcional] Selecione o controlador de matriz e defina o Nome da classe Em atributos para qualquer classe que seus itens sejam, por exemplo, NSString ou você pode usar o padrão Nsmutabledictionary E adicione as teclas na caixa abaixo, que consequentemente permite envolver seus itens em um dicionário e adicione teclas diferentes para o que deseja mostrar no botão pop -up e o que deseja ter em segundo plano. Para definir qual chave do dicionário você deseja refletir no botão pop -up, vá para as ligações do botão pop -up para "Contente" novamente e definir o "Caminho -chave modal" à chave que você adicionou no atributo do controlador de matriz.

Outras dicas

Embora os métodos NSPOPUPBTOTN como AddItemWithTitle: e Addmenu: não permitam nomes duplicados, é definitivamente possível ter itens com o mesmo título. Você simplesmente precisa definir o nome no próprio nsmenuitem.

Por exemplo, se você tiver uma variedade de cordas (como nomes da lista de reprodução, talvez), deseja adicioná -las a um botão pop -up e garantir que as duplicatas estejam lá, faça assim:

NSArray* items = [NSArray arrayWithObjects:@"Foo", @"Bar", @"Baz", @"Foo", nil];

for (NSString* item in items)
{
   [popupButton addItemWithTitle:@"blah"];
   [[popupButton lastItem] setTitle:item];
   [[popupButton lastItem] setTarget:self];
   [[popupButton lastItem] setAction:@selector(something:)];
}

Ao invés de usar addItemWithTitle:, você pode criar um nsmenuitem manualmente e adicioná -lo diretamente ao menu. Isso permite que você especifique qualquer título que desejar, além de poder inseri -lo em qualquer local no menu.

NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:@"foo" action:@selector(something:) keyEquivalent:@""];

[newItem setTarget:self];
[[popupButton menu] addItem:newItem];
[newItem release];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top