В качестве альтернативы, которая обрабатывает UIPickerView и листы действий, проверьте ActionSheetPicker
https://github.com/TimCinel/ActionSheetPicker
Включены коконады. Он обрабатывает все кнопки отмены и завершения на листе действий. Примеры в образце проекта великолепны. Я выбираю ActionSheetStringPicker, который легко обрабатывает только параметры на основе String, но API может обрабатывать почти все, что я могу придумать.
Первоначально я начал решение, очень похожее на отмеченный галочкой ответ, но наткнулся на этот проект, и мне потребовалось примерно 20 минут, чтобы интегрировать в свое приложение все, включая использование кокоподов: ActionSheetPicker (~> 0.0)
Надеюсь это поможет.
Загрузите проект git и посмотрите следующие классы:
- ActionSheetPickerViewController.m
- ActionSheetPickerCustomPickerDelegate.h
Вот примерно большая часть кода, который я добавил, плюс импорт * .h.
- (IBAction)gymTouched:(id)sender {
NSLog(@"gym touched");
[ActionSheetStringPicker showPickerWithTitle:@"Select a Gym" rows:self.locations initialSelection:self.selectedIndex target:self successAction:@selector(gymWasSelected:element:) cancelAction:@selector(actionPickerCancelled:) origin:sender];
}
- (void)actionPickerCancelled:(id)sender {
NSLog(@"Delegate has been informed that ActionSheetPicker was cancelled");
}
- (void)gymWasSelected:(NSNumber *)selectedIndex element:(id)element {
self.selectedIndex = [selectedIndex intValue];
//may have originated from textField or barButtonItem, use an IBOutlet instead of element
self.txtGym.text = [self.locations objectAtIndex:self.selectedIndex];
}
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return NO; // Hide both keyboard and blinking cursor.
}