2015-11-03 50 views
0

我一直在使用多层教程和stackoverflow答案将它们组合在一起。我有一个UITextField,当用户点击滑动UIDatePicker(而不是键盘)。日期选择器关闭后,TextField应更新为所选日期。UIDatePicker没有更新UITextField

但是,无论您将其更改为什么,它都只有当前日期/时间。我错过了什么?我想要格式化为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中缺少的东西。

回答

0

因为您在完成按钮被触摸时辞职_birthdayField。

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

+0

我该如何阻止它这样做?去除if块没有区别 –

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

改变这种idUIDatePicker作出的区别我!我还添加了我想要的格式。