Domanda

Nel tentativo di ottenere l'indice selezionato di una NSComboBox che ha un origine dati utilizzando indexOfSelectedItem.

[combobox setUsesDataSource:YES];
[combobox setDataSource:dataSource];
[combobox selectItemAtIndex:1];
int idx =[combobox indexOfSelectedItem];

idx sarà sempre restituisce -1;

Come gli stessi risultati anche quando si definisce una lista interna per la NSComboBox in InterfaceBuilder.

C'è un altro modo per recuperare l'indice selezionato?

È stato utile?

Soluzione

Si potrebbe provare a chiamare [combobox numberOfItems]; solo per assicurarsi che si dispone di elementi nella lista.

Inoltre, chiamando selectItemAtIndex:1 dovrebbe licenziare un NSComboBoxSelectionDidChangeNotification che si può ascoltare per per assicurarsi che cambia.

Modifica 1: Inoltre, hai la certezza di selezionare "Utilizza Data Source" sul (tasto Comando-1 collegamento) "Attributi" per il ComboBox in Interface Builder? Per impostazione predefinita, si utilizza l'elenco interno, che sarebbe in contrasto con il metodo DataSource che si sta tentando di utilizzare.

Modifica. 2: Non importa di quel commento precedente, il codice chiama esplicitamente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top