質問

私は一生、つまずき続けます。 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: 方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top