Методы делегата 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 >
Другие вопросы по тегам