在同一视图控制器中为多个 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) {
}
一旦您的委托和数据源方法被排序,为选择器分配值应该可以正常工作。
我有一个带有两个不同 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) {
}
一旦您的委托和数据源方法被排序,为选择器分配值应该可以正常工作。