Источники данных NSComboBox и reloadData

В моем приложении есть NSCombobox, и для него настроен источник данных.

 IBOutlet NSComboBox *comboBox;

Я также указываю в какой-то момент в моей программе:

[comboBox reloadData];

Я думал, что после этого вызова я должен получать вызовы этих методов, если я не забыл установить источник данных поля со списком (что я и сделал):

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox

Но я не знаю. Разве не так работают поля со списком?


person JPC    schedule 20.08.2011    source источник
comment
Похоже, они могут работать с источником данных или внутренним списком. Когда вы впервые заполняете поле со списком, вызываются ли эти методы?   -  person paulmelnikow    schedule 20.08.2011
comment
Насколько я понимаю, как работает источник данных, если в IB я связываю выход источника данных из поля со списком с моим классом контроллера, то для заполнения поля со списком он должен вызывать эти методы источника данных, но они никогда не вызываются.   -  person JPC    schedule 20.08.2011
comment
Я не использую внутренний список, только источник данных   -  person JPC    schedule 20.08.2011
comment
Похоже, вы говорите, что им вообще не звонят: ни до, ни после звонка reloadData. (При условии, что вы можете настроить любые структуры, которые требуются методам источника данных, до первого отрисовки комбинации, нет необходимости вызывать reloadData, если только данные не изменятся.)   -  person paulmelnikow    schedule 20.08.2011
comment
В разделе Поле со списком в IB выбрано Использует источник данных?   -  person paulmelnikow    schedule 20.08.2011
comment
Это сейчас... Я не знал, что там есть флажок! Все хорошо. Спасибо!   -  person JPC    schedule 20.08.2011


Ответы (1)


Если вы используете поле со списком с источником данных и при условии, что вы можете настроить любые структуры, требуемые методами источника данных, до первого рисования списка, вам нужно вызвать reloadData только в том случае, если данные впоследствии изменятся.

Если методы источника данных не вызываются вообще — ни до, ни после вызова reloadData — убедитесь, что поле со списком настроено на использование источника данных. В пера в разделе Поле со списком выберите Использует источник данных или вызовите [comboBox setUsesDataSource:YES] в коде.

person paulmelnikow    schedule 20.08.2011