UIDatePicker没有更新UITextField

时间:2015-11-03 11:11:37

标签: ios objective-c xcode uitextfield uidatepicker

我一直在使用多项教程和stackoverflow答案来拼凑这些内容。我有一个UITextField当用户点按UIDatePicker(而不是键盘)时。关闭日期选择器后,TextField应使用所选日期进行更新。

然而,无论你改变什么,它都只有当前的日期/时间。我错过了什么?我希望它格式化为 MM / dd / yyyy

- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];

//birthday view
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
UIToolbar *doneBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)];

datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
_birthdayField.inputView = datePicker;
[_birthdayField setInputAccessoryView:doneBar];


[doneBar setBarStyle:UIBarStyleDefault];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                           target:nil
                           action:nil];
[doneBar setItems: [NSArray arrayWithObjects:spacer, [[UIBarButtonItem alloc]
                                                      initWithTitle:@"Done"
                                                      style:UIBarButtonItemStyleDone
                                                      target:self
                                                      action:@selector(datePickerDone:)],nil ] animated:YES];
}

- (IBAction)datePickerDone:(id)sender {
    [_birthdayField resignFirstResponder];
}

-(void)updateTextField:(id)sender {
    if([_birthdayField isFirstResponder]) {
        UIDatePicker *picker = (UIDatePicker*)_birthdayField.inputView;
        _birthdayField.text = [NSString stringWithFormat:@"%@", picker.date];
    }
}

我认为这是我在updateTextField中缺少的东西。

2 个答案:

答案 0 :(得分:0)

因为在触摸完成按钮时你退出_birthdayField。

因此,如果块永远不会被调用,则updateTextfield中的代码。

答案 1 :(得分:0)

在玩完之后我发现了这个问题。 Bseh的回答没有适用,因为当我在updateTextField中放置一个断点时,肯定会遇到它。我更改了以下内容:

- (void)updateTextField:(UIDatePicker *)sender {
    NSDateFormatter *datePickerFormat = [[NSDateFormatter alloc] init];
    [datePickerFormat setDateFormat:@"MM  /  dd  /  yyyy"]; //here specify your format..
    NSString *dateString = [datePickerFormat stringFromDate:sender.date];
    self.birthdayField.text = dateString;
}

id更改为UIDatePicker对我有所帮助!我还添加了我想要的格式。