Не удалось получить выбранный индекс из NSComboBox

Я пытаюсь получить выбранный индекс NSComboBox с источником данных, используя indexOfSelectedItem.

[combobox setUsesDataSource:YES];
[combobox setDataSource:dataSource];
[combobox selectItemAtIndex:1];
int idx =[combobox indexOfSelectedItem];

idx всегда будет возвращать -1;

Получение тех же результатов даже при определении внутреннего списка для NSComboBox в InterfaceBuilder.

Есть ли другой способ получить выбранный индекс?


person Martinj    schedule 05.11.2009    source источник


Ответы (1)


Вы можете попробовать вызвать [combobox numberOfItems];, чтобы убедиться, что у вас есть элементы в списке.

Кроме того, вызов selectItemAtIndex:1 должен запускать NSComboBoxSelectionDidChangeNotification, которое вы можете прослушать, чтобы убедиться, что оно изменяется.

Редактировать 1: Кроме того, убедитесь, что вы выбрали «Использует источник данных» в «Инспекторе атрибутов» (клавиша быстрого доступа Command-1) для поля со списком в Interface Builder? По умолчанию используется внутренний список, который может конфликтовать с методом DataSource, который вы пытаетесь использовать.

Редактировать 2: Не обращайте внимания на предыдущий комментарий, ваш код вызывает его явно.

person Topher Fangio    schedule 05.11.2009
comment
Теперь все работает, я не знаю, что было не так, возможно, что-то не так в IB. - person Martinj; 05.11.2009