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

iOS 7中文本字段的弹出/模式选择器,ios,datepicker,modal-dialog,popup,picker,Ios,Datepicker,Modal Dialog,Popup,Picker,我在弄清楚如何实现一个标准的弹出选择器时遇到了很多麻烦。与许多应用程序的注册屏幕一样,当用户选择生日文本字段时,我希望出现一个弹出选择器,以便用户可以选择他们的生日,单击“完成”,格式化的日期将添加到文本字段中。这看起来并不难,但在iOS 7中似乎没有简单、清晰、标准的方法 我搜索过互联网,看到一些人说使用情态动词,其他人说使用动作表,其他人说使用弹出窗口,还有一些人说使用单独的视图控制器 有谁能告诉我做这件事的标准方法是什么,或者是如何实现它的一个片段吗?我认为“标准”方法是将选择器设置为文本

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

我搜索过互联网,看到一些人说使用情态动词,其他人说使用动作表,其他人说使用弹出窗口,还有一些人说使用单独的视图控制器

有谁能告诉我做这件事的标准方法是什么,或者是如何实现它的一个片段吗?

我认为“标准”方法是将选择器设置为文本字段的inputView

UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;
它将从底部前弹出,就像您在文本字段中触摸键盘一样

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];
}
这家公司似乎做得很好


这很有帮助,但我们还是放弃它吧?就像一个导致日期选择器消失的“完成”按钮一样,这难道不是这样一个非常标准的东西吗?我希望我不会觉得自己没有威胁性,uve比其他任何东西都更有帮助。我发现我只是对来自安卓的这方面的资源缺乏感到沮丧,而安卓的学生每年都不会贬值。@ChuckKelly,你可以用didSelectRow方法让文本字段引咎第一响应者。非常感谢你,我接受了你的回答,但是最后一件小事。这个弹出的视图并不是我故事板的一部分,如果我想添加一个“完成”按钮(我现在也知道id add self.tf resignFirstResponder),我该如何添加该按钮我问bc,如果你简单地向下滚动选取器,它会选择它所落下并关闭的对象,这可能会让一些人有点恼火,但这与选取值并不完全相同。@ChuckKelly,没有办法自定义选取器视图的外观。您可以在文本字段旁边添加一个“完成”按钮,并将代码放在那里(或者在选择一个值后,您可以在代码中的选择器上方添加一个“完成”按钮)。顺便说一句,你没有接受我的答案,你投了赞成票。您需要单击大空心箭头来接受答案。您可以构造一个
UIToolbar
,并将其设置为文本字段的
inputAccessoryView
。我无法从当前的git克隆中生成此选项。Xcode 7.2.1给出了:dyld`dyld_致命错误:->0x120055088:brk#0x3