UIPickerView не отображается

У меня есть UIPickerView в UIView. Я реализовал его протокол в файлах .h и делегаты в файлах .m:

 <UIPickerViewDataSource, UIPickerViewDelegate>

В IB я подключил вышеперечисленное к сборщику, для которого у меня также есть IBoutlet. Методы выглядят следующим образом:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [self.arr count];
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row  forComponent:(NSInteger)component {
return @"test";
}

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
//do something
}

Есть идеи, какую часть мне не хватает, чтобы заставить сборщик работать?


person 4thSpace    schedule 02.05.2010    source источник
comment
Вы проверили в numberOfRowsInComponent, что self.arr не равен нулю и действительно содержит данные?   -  person    schedule 02.05.2010
comment
Этот метод никогда не срабатывает. Ни один из методов делегата не работает.   -  person 4thSpace    schedule 02.05.2010
comment
в чем проблема сейчас?   -  person Rajneesh071    schedule 19.12.2012


Ответы (3)


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

В файле .h вывод представления средства выбора должен быть объявлен следующим образом:

@property (неатомарное, сохраняемое) IBOutlet UIPickerView *pickerView;

person Community    schedule 02.05.2010
comment
Все это было в порядке. Я обнаружил, что по какой-то причине UIPickerView не инициализировался. Я отключил его IBoutlet и снова подключился. Теперь все в порядке. - person 4thSpace; 03.05.2010
comment
это ничего не сделало для меня. Я просто перетащил из раскадровки, и Xcode сделал это свойство немного по-другому. @property (слабый, неатомарный) IBOutlet UIPickerView *departmentPickerView; - person coolcool1994; 21.04.2013

вы не назначили делегата UIPickerView, поэтому ни один из методов делегата не вызывается.

 UIPickerView *pickerView;
 pickerView.delegate = self;//write this line in view did load method.

Надеюсь, это поможет, и дайте мне знать, если это ответит на ваш вопрос..:)

person Dalee Davis    schedule 18.12.2012

иногда это связано с тем, что представление выбора не подключено к источнику данных владельца файла и делегату в nib

person DanKiiing    schedule 18.12.2012