在同一视图控制器中为多个 UIPickerView 设置唯一的默认值 Objective C

Setting unique default values for multiple UIPickerViews in the same View Controller Objective C

我有一个带有两个不同 UIPickerView 的视图控制器。第一个是包含七个名字的。第二个是从 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(第一个元素)出现

问题可能是您的 UIPickerView 数据源和委托方法没有区分两个 UIPickerView。一种处理方法是在 InterfaceBuilder 中给它们单独的标签,然后在您的委托和数据源方法中使用 if and/or 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) {
}

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