0

indexOfSelectedItem を使用して、データソースを持つ NSComboBox の選択されたインデックスを取得しようとしています。

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

idx は常に -1 を返します。

InterfaceBuilder で NSComboBox の内部リストを定義しても同じ結果が得られます。

選択したインデックスを取得する他の方法はありますか?

4

1 に答える 1

2

[combobox numberOfItems];リストにアイテムがあることを確認するためだけに電話してみてください。

さらに、呼び出しselectItemAtIndex:1は、変更を確認するためにリッスンできるNSComboBoxSelectionDidChangeNotificationを起動する必要があります。

編集 1:また、Interface Builder の ComboBox の「Attributes Inspector」(Command-1 ショートカット キー) で「Uses Data Source」を選択したことを確認しましたか? デフォルトでは、使用しようとしている DataSource メソッドと競合する内部リストが使用されます。

編集 2:前のコメントは気にしないでください。コードはそれを明示的に呼び出します。

于 2009-11-05T16:34:16.807 に答える