我有以下代码可以更改UIPickerView中两个不同组件中的选定行,但只有第一个更改。
[pickerView selectRow:[pickerView selectedRowInComponent:0] inComponent:1 animated:TRUE];
[pickerView selectRow:[pickerView selectedRowInComponent:1] inComponent:0 animated:TRUE];
但是当我执行以下操作时,它们都会发生变化。
[pickerView selectRow:5 inComponent:0 animated:TRUE];
[pickerView selectRow:3 inComponent:1 animated:TRUE];
第一个代码有什么问题,为什么它不起作用?
答案 0 :(得分:1)
可能是因为他们互相提及。
您应记录所选行,然后使用它:
NSInteger selectedRowInFirst = [pickerView selectedRowInComponent:0];
NSInteger selectedRowInSecond = [pickerView selectedRowInComponent:1];
[pickerView selectRow:selectedRowInFirst inComponent:1 animated:TRUE];
[pickerView selectRow:selectedRowInSecond inComponent:0 animated:TRUE];
答案 1 :(得分:0)
您将使用组件0中的值覆盖第一个语句中组件1中所选行的值。然后在第二个语句中,您使用刚刚复制的相同值再次在组件0中设置行选择。
因此,您将组件0设置回其自己的原始选定值。
你需要做这样的事情:
int comp1OriginalRowValue = [pickerView selectedRowInComponent:1];
[pickerView selectRow:[pickerView selectedRowInComponent:0] inComponent:1 animated:TRUE];
[pickerView selectRow:comp1OriginalRowValue inComponent:0 animated:TRUE];