UIPickerView pickerView:titleForRow: метод rowforComponent не вызван

У меня есть UIPickerView в моей раскадровке. UIViewController, содержащий его, имеет установленные объявления интерфейса

@interface ContactDetail : UIViewController <ABPeoplePickerNavigationControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate,UIAlertViewDelegate, UITextFieldDelegate>

on view Загрузить, установить делегирование сборщика

pickerView_RelationshipType.dataSource=self;
pickerView_RelationshipType.delegate = self;
pickerView_RelationshipType.showsSelectionIndicator = YES;

все источники данных UIPickerView и методы делегата запущены, кроме тех, которые 2

pickerView:titleForRow:rowforComponent
and
pickerView:viewForRow:forComponent:reusingView

Следующие называются, нет проблем

    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

2 ответа

Решение

Что в numberOfComponentsInPickerView?

Если твой numberOfRows возвращая 0, ваш метод делегата никогда не будет вызван - сборщик не будет запрашивать заголовок строки, если он не думает, что у него есть какие-либо строки для отображения.

Убедитесь, что ваш массив источников данных выделен и инициализирован. Я столкнулся с этой проблемой, когда все было правильно подключено (я установил источник данных и делегатов и соответствовал протоколам), но я забыл инициализировать свои массивы источников данных перед добавлением к ним объектов. Мой код бьет numberOfComponentsInPickerView а также numberOfRowsInComponent но нет titleForRow и я не мог понять почему. Убедитесь, что ваш источник данных не возвращает ноль.

Вроде глупый крайний случай, но я решил добавить свой ответ на случай, если кто-то столкнется с той же проблемой.

Другие вопросы по тегам