Это может быть "хак", но это работает. Мой случай немного другой. Я использую один UIPicker
, но могу изменить объект, которым он манипулирует.
Моя проблема заключалась в том, что вы могли выбрать один объект, повернуть средство выбора и, пока он заканчивает свое вращение, выбрать другой объект. В итоге произошло то, что новый объект получал окончательное значение этого вращения, а не игнорировалось.
Что я сделал, что при настройке UIPicker
я дал ему уникальный tag
на основе объекта, который он должен был обновить.
- (void)updatePickerView:(UIPickerView*)pickerView
{
...
pickerView.tag = [self.myObject.position integerValue];
[pickerView selectRow:i inComponent:0 animated:NO];
}
Затем, когда он заканчивает вращение, я проверяю, чтобы метка все еще оставалась на одном уровне.
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView.tag == [self.myObject.position integerValue]) {
...
}
}
Я не уверен, как это работает на стороне Apple, но этого было достаточно, чтобы заставить его работать на меня.
В качестве примечания, и я не уверен, имеет ли это значение, но мой UIPicker
находится в UITableViewCell
, но, поскольку это повторно используемая ячейка и поскольку у меня были проблемы, которые были у меня, я предполагаю, что UIPicker такой же, когда он перемещается из одной позиции в другую (поскольку на экране одновременно отображается только одна).
person
RyanJM
schedule
15.06.2015
[picker selectRow:[picker selectedRowInComponent:i] inComponent:i animated:YES];
для каждого компонентаi
, который у вас есть? - person nacho4d   schedule 30.01.2011