更改为UIPickerView中两个不同组件中的行

时间:2012-02-28 12:43:49

标签: iphone ios xcode cocoa uipickerview

我有以下代码可以更改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];

第一个代码有什么问题,为什么它不起作用?

2 个答案:

答案 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];