Как отклонить UIPIckerView, как только пользователь выбрал свой выбор - PullRequest
7 голосов
/ 11 октября 2011

У меня UIPickerView подключен к UITextField's inputView.У меня это выскакивает.Я знаю, когда пользователь выбирает строку.Я знаю значение для строки.Все это замечательно.

Мой вопрос касается того, когда нужно уволить сборщика.Я видел, как люди брали панель инструментов с [Отмена] и [Готово] на сборщик и отклоняли ее при нажатии любой кнопки.Вероятно, это лучший подход, поскольку пользователь может отказаться от своего выбора.

Я также видел одно приложение, в котором пользователь прокручивает до нужного выбора, а затем нажимает его снова, чтобы отклонить средство выбора.Я хотел бы знать, как это сделать.Я заметил, что как только сборщик сообщит вам о выбранной строке, он не будет информировать вас снова, если пользователь продолжит нажимать / нажимать на такую ​​же активную строку.

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Привет, UserDano, поскольку вы добавили средство выбора как ipnputView в текстовое поле, которое можно вызвать

 [outletForTextField resignFirstResponder] 

, и это поможет вам отказаться от выбора. Теперь, как вы хотите сделать это, при первом выборе вы хотите выбрать значение, а при втором выборе (для той же строки) вы хотите скрыть средство выбора. Таким образом, сохраняя значение Bool для сохранения выбранного значения, а затем используйте его для удаления сборщик, когда выбран тот же ряд, может помочь. Надеюсь, это поможет

0 голосов
/ 23 марта 2012

Если вы хотите узнать, как закрыть окно выбора при нажатии на кнопку, вы можете поместить этот фрагмент, который я использовал, в один из моих проектов:

    NSInteger selectedRow=[yourPickerView selectedRowInComponent:0];// i assume your picker have one component
NSString *item=[yourPickerView objectAtIndex:selectedRow];//get the selected item
yourTextField.text=[NSString stringWithFormat:@"%@",item];//display the selected item in the text field
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
CGAffineTransform transform=CGAffineTransformMakeTranslation(0, 480);
yourPickerView.transform=transform;
[UIView commitAnimations];//dismiss the view controller which contains the picker view

Поместите код выше в ваш метод IBAction кнопки. Надеюсь, это поможет.

...