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é?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top