データソースを備えたNSComboBoxがあり、三角形をクリックしてアイテムの1つをクリックすると、完全に機能します。ただし、ユーザーがボックスに入力してオートコンプリートを使用して名前を選択できるようにすることも必要です。現在、ユーザーが入力すると、選択したいアイテムがオートコンプリートされますが、選択されません。
ユーザーがコンボボックスに入力して選択アイテム名がオートコンプリートされたときに、コンボボックスを終了するとメソッドが実行され、ポップアップリストから同じ名前のアイテムが選択されるように、委任メソッドを実装する必要があると考えました。
私はこの委任方法を実装しました:
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {
NSString *tempString = [outletPerformanceVenue stringValue];
NSLog(@"New Value = %@",tempString);
[outletPerformanceVenue selectItemWithObjectValue:tempString];
return TRUE;
}
ただし、次のコンパイラエラーが発生しました。
*** -[NSComboBoxCell selectItemWithObjectValue:] should not be called when usesDataSource is set to YES
かなり簡単に思えますが、疑問に思います...アイテムを選択するための最良の方法は何でしょうか?この名前を含むデータソース配列内のレコードのインデックスを決定してから、同じインデックスを使用してコンボボックスアイテムを選択する必要がありますか?それとももっと直接的な方法がありますか?
*編集*
より単純でより直接的な質問は次のようになります。
ユーザーが(プルダウンリストから選択するのではなく)アイテムの名前をコンボボックスに入力した場合。データソースを使用しているときに、コンボボックスからそのアイテムのインデックスを取得するにはどうすればよいですか?
怪我に侮辱を加えるために、Appleのドキュメントには、selectItemWithObjectValue:は内部または外部のデータソースで機能する必要があると書かれています...ここで: