2012-02-28 9 views
0

UIPickerView内の2つの異なるコンポーネントで選択された行を変更する必要がある次のコードがありますが、最初のものだけが変更されます。UIPickerView内の2つの異なるコンポーネントの行に変更

[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

通話で同じpickerviewを参照しているどのように来ますか..? –

+0

は1つのpickerViewで2つの異なるコンポーネントですか? – ebsp

答えて

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]; 
+0

うん、それは、働いて、ありがとう! – ebsp

0

最初のステートメントのコンポーネント1の選択された行の値は、コンポーネント0の値で上書きされます。次に、2番目のステートメントで、コンポーネント0の行選択を再度設定するためにコピーした同じ値を使用します。

したがって、コンポーネント0を独自の選択した値に戻しています。

あなたはこのような何かをする必要があります。

int comp1OriginalRowValue = [pickerView selectedRowInComponent:1]; 
[pickerView selectRow:[pickerView selectedRowInComponent:0] inComponent:1 animated:TRUE]; 
[pickerView selectRow:comp1OriginalRowValue inComponent:0 animated:TRUE]; 
関連する問題