Подтвердить что ты не робот

Pop-up/Modal picker для текстового поля в IOS7

У меня много проблем с выяснением того, как реализовать стандартный всплывающее окно. Как и во многих окнах регистрации приложений, когда пользователь выбирает идентификатор поля дня рождения, как всплывающее меню, чтобы отобразить его, чтобы пользователи могли выбрать день рождения, нажмите "Готово", и форматированная дата будет добавлена ​​в текстовое поле. Это не похоже, что все должно быть так сложно, похоже, нет простого, понятного и стандартного способа сделать это в ios7. Я искал в Интернете и видел некоторые высказывания, чтобы использовать модальные, другие говорят, что таблицы действий, другие говорят всплывающие окна, а третьи говорят, что отдельный контроллер просмотра. Может кто-нибудь сказать мне, что стандартный способ сделать это и/или предоставить ссылку на tut или фрагмент о том, как его реализовать?

4b9b3361

Ответ 1

Я думаю, что "стандартный" способ состоит в том, чтобы установить сборщик как inputView текстового поля.

UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;

Он появится вверху внизу, точно так же, как клавиатура делает, когда вы касаетесь текстового поля.

Вот простая реализация того, как использовать сборщик в качестве входного представления:

@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];
}