Методы делегата UIPickerView не вызываются, даже если делегат был установлен после [[UIPickerView alloc] init]
Название говорит само за себя, у меня есть метод, который вызывается для создания UIPickerView и в том же контроллере представления, что и методы делегата. Контроллер представления реализует протоколы UIPickerViewDataSource и UIPickerViewDelegate
// ViewController.m
- (void)setUpPickerView{
UIPickerView *pickerView = [[UIPickerView alloc] init];
pickerView.dataSource = self;
pickerView.delegate = self;
pickerView.showsSelectionIndicator=YES;
self.groupsTextField.inputView = pickerView;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [self.pickerViewData count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return self.pickerViewData[row];
}
Я видел много ответов, где люди говорят, что если pickerView:numberOfRowsInComponent:component возвращает 0, это остановит вызов других методов делегата, но это не тот случай, когда я устанавливаю точки останова, ни один из методов делегата не вызывается вообще.
Заранее спасибо за помощь!
2 ответа
Спасибо всем за помощь. В конце концов, я сделал то, что, как я думал, должен, и просто удалил текстовое поле и все, что с ним связано, в контроллере представления и запустил снова. Я не вижу реальной разницы в моем новом коде и в том, что я опубликовал, поэтому я предполагаю, что это связано с текстовым полем в IB.
Добавить делегат Picker в.h файл
@ interface ViewController :UIViewController< UIPickerViewDataSource , UIPickerViewDelegate >