Невозможно получить выбранный индекс из NSComboBox
-
16-09-2019 - |
Вопрос
Я пытаюсь получить выбранный индекс NSComboBox, у которого есть источник данных, используя indexOfSelectedItem.
[combobox setUsesDataSource:YES];
[combobox setDataSource:dataSource];
[combobox selectItemAtIndex:1];
int idx =[combobox indexOfSelectedItem];
idx всегда будет возвращать -1;
Получение тех же результатов даже при определении внутреннего списка для NSComboBox в InterfaceBuilder.
Есть ли другой способ получить выбранный индекс?
Решение
Вы можете попробовать позвонить [combobox numberOfItems];
просто чтобы убедиться, что у вас есть элементы в списке.
Кроме того, вызов selectItemAtIndex:1
должен запустить NSComboBoxSelectionDidChangeNotification что вы можете прислушаться, чтобы убедиться, что оно изменится.
Редактировать 1: Кроме того, убедитесь ли вы, что выбрали «Использует источник данных» в «Инспекторе атрибутов» (сочетание клавиш Command-1) для ComboBox в Interface Builder?По умолчанию он использует внутренний список, который может конфликтовать с методом DataSource, который вы пытаетесь использовать.
Редактировать 2: Не обращайте внимания на предыдущий комментарий, ваш код вызывает его явно.