Ios UIDatePicker返回当前日期,即使我选择了不同的日期

Ios UIDatePicker返回当前日期,即使我选择了不同的日期,ios,objective-c,uidatepicker,Ios,Objective C,Uidatepicker,因此,我有一种方法,将键盘更改为UIDatePicker,并希望用户选择日期以设置提醒。到目前为止,我已经将键盘切换到UIDatePicker,当我打印出日期字符串时,它只打印当前日期,而不管我设置了什么 self.datePicker = [[UIDatePicker alloc] init]; [self.noteTextView becomeFirstResponder]; [self.noteTextView setInputView:self.datePicker]; NSDate

因此,我有一种方法,将键盘更改为UIDatePicker,并希望用户选择日期以设置提醒。到目前为止,我已经将键盘切换到UIDatePicker,当我打印出日期字符串时,它只打印当前日期,而不管我设置了什么

self.datePicker = [[UIDatePicker alloc] init];

[self.noteTextView becomeFirstResponder];
[self.noteTextView setInputView:self.datePicker];

NSDate *date = self.datePicker.date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];

self.myDate = [dateFormatter stringFromDate:date]; //a string of the date that I want to use in other methods

NSLog(@"Date: %@", [dateFormatter stringFromDate:date]);

UIDatePicker的默认日期是当前日期,即您正在打印的日期。供挑选日期使用

[self.myDatePicker addTarget:self action:@selector(datePickerChanged:) forControlEvents:UIControlEventValueChanged];

- (void)datePickerChanged:(UIDatePicker *)datePicker
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"];
NSString *strDate = [dateFormatter stringFromDate:datePicker.date];
NSLog(@"Date: %@", strDate);
}

您是否已使用IBOutlet创建属性?如果是,则不执行alloc和init,因为它将创建UIDatePicker的另一个实例,并且您的日期选择不会影响当前代码。这对我在iOS 12 Beta 8-9中遇到的一个类似问题有很大帮助,即获取日期选择器的日期返回了默认日期。这在iOS11中曾经奏效。