Я использую многоуровневые учебные пособия и ответы 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.
Как я могу остановить это от этого? Удаление блока if не имело никакого значения –