Impossibile recuperare indice selezionato da NSComboBox
-
16-09-2019 - |
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?
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