iOS 7中文本字段的弹出/模态选择器

Chu*_*lly 32 modal-dialog datepicker popup picker ios

我在搞清楚如何实现标准弹出选择器时遇到了很多麻烦.像许多应用程序的注册屏幕一样,当用户选择生日文本字段时,我想要一个弹出选择器出现,以便用户可以选择他们的生日,点击完成,格式化的日期将被添加到文本字段.这看起来似乎不应该那么难,但似乎在iOS 7中没有简单,清晰,标准的方法.

我搜索了互联网并看到一些说使用模态,其他人说操作表,其他人说弹出窗口,还有人说一个单独的视图控制器.

任何人都可以告诉我这样做的标准方法是什么,或者是如何实现它的片段?

rde*_*mar 71

我认为"标准"方式是将选择器设置为文本字段的inputView.

UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;
Run Code Online (Sandbox Code Playgroud)

它会弹出底部,就像键盘在文本字段中触摸时一样.

这是一个如何使用选择器作为输入视图的简单实现:

@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];
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以构造一个`UIToolbar`并将其设置为文本字段的`inputAccessoryView`. (5认同)

Law*_*oot 16

ActionSheetPicker-3.0库,似乎要做到这一点非常好.

日期选择器

动画