NSComboBox - 選択した情報と NSComboBoxDataSource の取得
-
19-09-2019 - |
質問
私は一生、つまずき続けます。 NSComboBox
.
に準拠したオブジェクトを作成しました NSComboBoxDataSource
プロトコルと実装:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
私のインスタンスを設定しました NSComboBox
データ ソースを使用し、このオブジェクトをソースとして設定します。これはうまく機能します。私の実装ではアイテムの数が返され、 NSString
特定のインデックスでの項目の値。
そして、何かが選ばれたときに何かをしたいと決心するのですが、ここからが問題の始まりです。をオーバーライドする明確な方法はありません。 NSComboBoxDataSource
コンボボックス内の項目の選択を処理するプロトコル。
したがって、私もオブジェクトを以下に準拠させます NSComboBoxDelegate
そして以下を実装します:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
残念ながら、それとは異なり、 NSTableView
選択すると、通知のオブジェクトは NSComboBox
選択された項目のオブジェクトではありません。「大丈夫」と自分に言い聞かせて、電話してみます NSComboBox
方法:
- (id)objectValueOfSelectedItem;
これにより、選択された項目が返されるはずで、そこから進むことができます。ただし、そのメソッドは次の場合にのみ呼び出されます。 usesDataSource
に設定されています NO
, 、私の場合ではありません。これを使用すると警告が飛び始めます。
それで、私の質問は、適切な対処方法は何ですかということです NSComboBox
データ ソースを使用するときに選択を変更しますか?
解決
あなたが欲しいと思います 選択された項目のインデックス objectValueOfSelectedItem の代わりに。次に、あなたがデータソースであるため、独自のデータソースを呼び出すことができるはずです comboBox:objectValueForItemAtIndex:
方法。