我有一个UIPickerView,它有两个组件。组件1中的行数取决于组件0.我正在尝试以下操作:
// [picker reloadAllComponents];
[picker selectRow:5 inComponent:0 animated:NO];
[picker reloadComponent:1]; // [picker reloadAllComponents];
[picker selectRow:3 inComponent:1 animated:NO];
// [picker reloadAllComponents];
组件0设置为索引5,组件1显示信息,就像在组件0中选择了索引0一样!
答案 0 :(得分:0)
我尝试了完全相同的东西,它完美无缺。这是一些相关的代码:
此代码仅在您手动选择行时才相关:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (component == 0) {
[pickerView reloadComponent:1];
}
}
我添加了一个按钮,可以在点击时执行您的代码。
- (void)buttonAction:(id)sender {
[pickerView selectRow:3 inComponent:0 animated:NO];
[pickerView reloadComponent:1];
[pickerView selectRow:1 inComponent:1 animated:NO];
}
这是我拥有的最后一段相关代码:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch (component) {
case 0:
return 5;
break;
case 1:
return [pickerView selectedRowInComponent:0];
break;
default:
break;
}
return 5;
}
一切都按预期工作,因此您发布的行不是导致问题的行。如果您在阅读完我的代码(经过测试和工作)后无法弄明白,我建议您发布更多代码。