2012-05-24 3 views
2

У меня есть NSComboBox с источником данных, и он отлично работает, когда вы нажимаете на треугольник и выбираете один из элементов, нажимая на него. Тем не менее, я также хочу, чтобы он разрешил пользователю вводить поле, чтобы выбрать имя, используя автоматическое завершение. В настоящее время, когда пользователь вводит тип, я хочу выбрать автозаполнение, но не выбираю.NSComboBox Delegation

Моя мысль заключалась в том, что я должен реализовать метод делегирования, чтобы, когда пользователь вводит в поле со списком и имя объекта выбора автозаполнение, оставляя combobox, будет запускать этот метод, чтобы затем выбрать элемент с тем же именем из pop .

Я реализовал этот метод делегирования:

- (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 

кажется довольно прямо вперед, но оставляет мне интересно ... что было бы лучше способ выбора элемента? Должен ли я определить индекс записи в массиве данных, который содержит это имя, а затем выбрать элемент со списком с использованием того же индекса? Или есть более прямой путь?

* EDIT *

более простой и прямой вопрос может быть:

Если пользователь вводит (а не выбирает из выпадающего списка) имя элемента в в поле со списком. Как я могу получить индекс этого элемента из поля со списком при использовании источника данных?

Чтобы добавить оскорбление раны, документация Apple, говорит о том, что selectItemWithObjectValue: должны работать с внутренними и внешними источниками данных ... на здесь:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ComboBox/Tasks/SettingComboBoxValue.html

+0

Неужели вам когда-нибудь удавалось это выяснить? – Kyle

ответ

3

Короткий ответ: используйте метод selectItemAtIndex, или позвоните по телефону setStringValue: (NSComboBox наследует от NSTextField), если вы действительно хотите использовать строку.

И только для полноты: Я пришел сюда из-за связанной, но немного другой проблемы.

Я просто объясню, как я построил свой combobox. Я не уверен, что это относится к вашей ситуации, но я надеюсь, что это может помочь кому-то.

Я применил методы DataSource для выполнения работы по завершению работы, но привязки делают работу для фактической установки значения. Таким образом, нажатие возвращает либо автозаполняет элемент в один из параметров, либо создает новое значение, если нет возможности автозаполнения. Связи просто заботятся о настройке и получении значения.

 Смежные вопросы

  • Нет связанных вопросов^_^