NSComboBox — Получение выбранной информации и NSComboBoxDataSource
-
19-09-2019 - |
Вопрос
Хоть убей, меня постоянно ставят в тупик NSComboBox
.
Я создал объект, который соответствует NSComboBoxDataSource
протокол и реализован:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
Я установил экземпляр моего NSComboBox
использовать источник данных и установить этот объект в качестве источника.Это прекрасно работает, моя реализация возвращает количество элементов и возвращает NSString
стоимость элемента по определенным индексам.
Потом я решаю, что хочу что-то сделать, когда что-то выбрано, вот здесь и начинаются мои проблемы.Не существует очевидного метода переопределения в NSComboBoxDataSource
протокол для обработки выбора элементов в поле со списком.
Итак, мой объект также соответствует NSComboBoxDelegate
и реализовать:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
К сожалению, в отличие от NSTableView
при выборе объектом уведомления является NSComboBox
не объект выбранного элемента.«Хорошо», говорю я себе, я позвоню NSComboBox
метод:
- (id)objectValueOfSelectedItem;
Это должно вернуть выбранный элемент, и я смогу продолжить.Однако этот метод следует вызывать ТОЛЬКО тогда, когда usesDataSource
установлено на NO
, это не мой случай.Предупреждения начинают появляться, когда я использую это.
Итак, мой вопрос в том, как правильно справиться с NSComboBox
выборки при использовании источника данных?
Решение
Я думаю, ты хочешь индексОфселектедитем вместо objectValueOfSelectedItem.Тогда, поскольку вы являетесь источником данных, вы сможете вызвать свой собственный comboBox:objectValueForItemAtIndex:
метод.