2010-05-02 2 views
4

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

<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 
} 

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

+0

В numberOfRowsInComponent, вы убедились, что self.arr не ноль, а на самом деле есть данные? – DyingCactus

+0

Этот метод никогда не попадает. Ни один из методов делегата не попадает. – 4thSpace

+0

В чем проблема сейчас? – Rajneesh071

ответ

7

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

В файле .h, выход выбора режима просмотра должен быть объявлен как это:

@property (неатомической, сохранить) IBOutlet UIPickerView * pickerView;

+0

Все они были в порядке. Я обнаружил, что по какой-то причине UIPickerView не инициализировался. Я отключил его IBoutlet и снова подключился. Теперь все в порядке. – 4thSpace

+0

это ничего не делало для меня. Я просто перетащил из раскадровки, и Xcode сделал это свойство немного по-другому. @property (слабый, неатомный) IBOutlet UIPickerView * departmentPickerView; – coolcool1994

1

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

3

вы не назначили делегата на UIPickerView то причина ни один из методов делегата не называются.

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

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