Impossible de récupérer l'index de NSComboBox sélectionné
-
16-09-2019 - |
Question
Im essayant d'obtenir l'indice sélectionné d'un NSComboBox qui a une source de données en utilisant indexOfSelectedItem.
[combobox setUsesDataSource:YES];
[combobox setDataSource:dataSource];
[combobox selectItemAtIndex:1];
int idx =[combobox indexOfSelectedItem];
IDX renvoie invariablement -1;
Obtenir les mêmes résultats même lors de la définition d'une liste interne de NSComboBox dans InterfaceBuilder.
Y at-il une autre façon de récupérer l'index sélectionné?
La solution
Vous pouvez essayer d'appeler [combobox numberOfItems];
juste pour vous assurer que vous avez des éléments dans la liste.
En outre, appeler selectItemAtIndex:1
devrait tirer un NSComboBoxSelectionDidChangeNotification que vous pouvez écouter pour vous assurer qu'il change.
Modifier 1: Aussi, avez-vous vous de sélectionner « Utilise la source de données » sur les attributs « Inspecteur » (touche de raccourci Commande-1) pour la zone de liste déroulante dans Interface Builder? Par défaut, il utilise la liste interne, ce qui serait en contradiction avec la méthode DataSource que vous essayez d'utiliser.
Edit 2:. Peu importe à ce sujet un commentaire précédent, votre code appelle explicitement