在同一View Controller Objective C中为多个UIPickerView设置唯一的默认值

时间:2016-06-06 19:06:00

标签: ios objective-c uipickerview

我有一个带有两个不同UIPickerViews的View Controller。第一个是包含七个名字。第二个是从1到100的数字(字符串)列表。我希望默认值是列表中的最后一个数字。

我使用我在viewDidLoad中调用的以下方法设置了第一个UIPickerView的默认值。

[self.namePicker selectRow:2 inComponent:0 animated:YES];

这很好用,我的namePicker在运行代码时会显示第三个元素。

但是,以下方法调用对我的第二个UIPickerView(也在viewDidLoad中调用)不起作用。

[self.numberPicker selectRow:99 inComponent:0 animated:YES];

运行时没有错误,每次都会出现numberPicker,默认值为1(第一个元素)。

1 个答案:

答案 0 :(得分:1)

问题可能是你的UIPickerView数据源和委托方法没有区分两个UIPickerViews。处理它的一种方法是在InterfaceBuilder中为它们提供单独的标记,然后在委托和数据源方法中使用if和/或switch语句:

#define kNamesPicker            0     // tag assigned in IB
#define kNumberPicker           1     // tag assigned in IB
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

if (pickerView.tag == kNamesPicker) {
}
else if (pickerView.tag == kNumberPicker) {
}

一旦你的委托和数据源方法被分类,为选择器分配值应该可以正常工作。