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
и я не мог понять почему. Убедитесь, что ваш источник данных не возвращает ноль.
Вроде глупый крайний случай, но я решил добавить свой ответ на случай, если кто-то столкнется с той же проблемой.