2009-11-05 2 views
0

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

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

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

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

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

ответ

2

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

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

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

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

+0

Получил это сейчас, я не знаю, что случилось, возможно, что-то случилось в IB. – Martinj