Для альтернативы, которая обрабатывает UIPickerView и Action Sheets, извлеките ActionSheetPicker
https://github.com/TimCinel/ActionSheetPicker
Включены кокосопод.Он обрабатывает все кнопки отмены и завершения на листе действий.Примеры в рамках примера проекта великолепны.Я выбираю ActionSheetStringPicker, который легко обрабатывает только параметры, основанные на строках, но 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.
}