2015-11-03 67 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作出的區別我!我還添加了我想要的格式。