Popup/modal picker for a text field in iOS 7

后端 未结 2 382
再見小時候
再見小時候 2021-01-30 14:05

I am having a lot of trouble figuring out how to implement a standard popup picker. Like many apps\' registration screen when a user selects the birthday text field I\'d like a

2条回答
  •  一生所求
    2021-01-30 14:37

    I think the "standard" way, is to set the picker as the inputView of the text field.

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

    It will pop up front the bottom, just like the keyboard does when you touch in the text field.

    Here's a simple implementation of how to use a picker as an input view:

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

提交回复
热议问题