4

我在 UIView 上有一个 UIPickerView。我在 .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
}

任何想法我缺少哪一块来让选择器工作?

4

3 回答 3

7

如果委托方法没有被调用,那么在 IB 中仔细检查选择器视图的委托和数据源出口是否连接到文件的所有者。

在 .h 文件中,选择器视图出口应声明如下:

@property (nonatomic, 保留) IBOutlet UIPickerView *pickerView;

于 2010-05-02T20:24:44.657 回答
3

您尚未将委托分配给 UIPickerView,这就是没有调用任何委托方法的原因。

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

希望这会有所帮助,如果这能回答您的问题,请告诉我.. :)

于 2012-12-18T13:05:36.350 回答
1

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

于 2012-12-18T12:22:28.410 回答