human - Selector emergente/modal para un campo de texto en iOS 7
ios guidelines (2)
Estoy teniendo muchos problemas para descubrir cómo implementar un selector de ventanas emergentes estándar. Al igual que la pantalla de registro de muchas aplicaciones, cuando un usuario selecciona el campo de texto de cumpleaños, me gustaría que aparezca un selector de elementos emergentes para que los usuarios puedan seleccionar su fecha de nacimiento, hacer clic y la fecha con formato se agregará al campo de texto. Esto no parece ser tan difícil, pero parece que no hay una forma simple, clara y estándar de hacer esto en iOS 7.
He buscado en Internet y he visto algunos que dicen usar modales, otros dicen hojas de acción, otros dicen ventanas emergentes y otros dicen un controlador de vista independiente.
¿Alguien puede decirme cuál es la forma estándar de hacer esto o un fragmento de cómo implementarlo?
Creo que la forma "estándar" es establecer el selector como inputView del campo de texto.
UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;
Aparecerá delante de la parte inferior, al igual que lo hace el teclado cuando toca en el campo de texto.
Aquí hay una implementación simple de cómo usar un selector como una vista de entrada:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *tf;
@property (strong,nonatomic) NSArray *theData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIPickerView *picker = [[UIPickerView alloc] init];
picker.dataSource = self;
picker.delegate = self;
self.tf.inputView = picker;
self.theData = @[@"one",@"two",@"three",@"four"];
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.theData.count;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return self.theData[row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.tf.text = self.theData[row];
[self.tf resignFirstResponder];
}
La biblioteca ActionSheetPicker-3.0 parece hacer esto bastante bien.