Para una alternativa que maneja UIPickerView y Action Sheets, consulte ActionSheetPicker
https://github.com/TimCinel/ActionSheetPicker
Tiene cocoapods habilitados. Maneja todos los botones cancelar y listo en la hoja de acción. Los ejemplos dentro del proyecto de muestra son geniales. Elijo ActionSheetStringPicker, que maneja fácilmente solo las opciones basadas en cadenas, pero la API puede manejar casi cualquier cosa que se me ocurra.
Originalmente comencé una solución muy parecida a la respuesta marcada, pero tropecé con este proyecto y me tomó aproximadamente 20 minutos integrar las cosas en mi aplicación para su uso, incluido el uso de cocopods: ActionSheetPicker (~> 0.0)
Espero que esto ayude.
Descarga el proyecto git y mira las siguientes clases:
- ActionSheetPickerViewController.m
- ActionSheetPickerCustomPickerDelegate.h
Aquí está aproximadamente la mayor parte del código que agregué, más las importaciones * .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.
}