私の人生の間、私は絶えず困惑してい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
データソースを使用しているときに選択を処理する適切な方法は何ですか?