我有一个带有两个不同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(第一个元素)。
答案 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) {
}
一旦你的委托和数据源方法被分类,为选择器分配值应该可以正常工作。