Изменить на строки в двух разных компонентах в UIPickerView - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть следующий код, который должен изменить выбранные строки в двух разных компонентах в 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 ]

1 голос
/ 28 февраля 2012

Возможно, потому что они ссылаются друг на друга.

Вы должны записать выбранную строку и затем использовать ее:

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 голосов
/ 28 февраля 2012

Вы переопределяете значение выбранной строки в компоненте 1 в первом операторе на значение из компонента 0. Затем во втором операторе вы используете то же значение, которое вы только что скопировали, чтобы снова установить выбор строки в компоненте 0.

Таким образом, вы устанавливаете компонент 0 обратно к своему исходному выбранному значению.

Вам нужно сделать что-то вроде этого:

int comp1OriginalRowValue = [pickerView selectedRowInComponent:1];
[pickerView selectRow:[pickerView selectedRowInComponent:0] inComponent:1 animated:TRUE];   
[pickerView selectRow:comp1OriginalRowValue inComponent:0 animated:TRUE];
...