2010-05-02 69 views
4

我有UIView上的UIPickerView。我实现了其协议在.m文件h和代表: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 2010-05-02 19:36:47

+0

该方法从未命中。没有任何委托方法正在打。 – 4thSpace 2010-05-02 19:45:22

+0

现在有什么问题? – Rajneesh071 2012-12-19 07:39:21

回答

7

如果委托方法没有被调用,那么在IB中双击检查选择器视图的代理和数据源插座是否连接到文件的所有者。

在h文件,所述选择器视图出口应当声明如下:

@属性(非原子,保留)IBOutlet中UIPickerView * pickerView;

+0

所有这些都很好。我发现由于某种原因UIPickerView没有被初始化。我断开了它的IBoutlet并重新连接。现在一切都很好。 – 4thSpace 2010-05-02 20:33:48

+0

这对我没有任何帮助。我只是从storyboard拖出来,Xcode使这个属性有点不同。 @属性(弱,非原子)IBOutlet UIPickerView * departmentPickerView; – coolcool1994 2013-04-20 22:27:56

1

有时是由于没有连接到文件所有者的数据源和委托的笔尖

3

的pickerview你还没有分配委托给UIPickerView那是没有的委托方法的原因被调用。

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

希望这有助于让我知道如果这个回答你的问题.. :)