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

StackOverflow https://stackoverflow.com/questions/1681719

  •  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: Не обращайте внимания на предыдущий комментарий, ваш код вызывает его явно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top