UIDatePicker EventValueChanged未显示实际日期/时间

时间:2018-11-21 03:23:12

标签: ios objective-c uidatepicker

我有两个UILabel

1:时间(格式:HH:MM)

2:日期(格式:MMMM dd,yyyy)

我有一个UIDatePicker,它是UIDatePickerModeDateAndTime,称为:timeObjectReportedDatePicker

每次datePicker的值更改时,两个标签都应该显示datePicker中的相应值。因此,标签1将显示HH:MM,标签2将显示MMMM,dd,yyyy。

但事实并非如此;出于测试目的,我记录的是datePicker的值;仅获取当前时间/日期。不论我改变的日期或时间;该值仅更改为实际日期和时间,而不会更改为选择器值。这是标题中的代码。

@property (nonatomic, strong) IBOutlet UIDatePicker *timeObjectReportedDatePicker;

- (IBAction)datePickerValueChanged:(id)sender;

这是datePickerValueChanged方法的代码

-(void)datePickerValueChanged:(id)sender{

   NSLog(@"datePicker Value Changed");
   NSDate *today1 = self.timeObjectReportedDatePicker.date;

   NSLog(@"PickerValue: %@",today1);
   NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  [dateFormat setDateFormat:@"MMMM dd, yyyy"];
   NSString *dateString11 = [dateFormat stringFromDate:today1];
   dateObjectReportedUILabel.text=dateString11;
}

我确实将UIDatePicker SentEvent ValueChanged作为IBOutlet连接到valueDidChange事件的头文件。

有人可以阐明我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:1)

像那样更改您的操作方法

    - (IBAction)datePickerValueChanged:(UIDatePicker *)sender;

并像执行该方法一样

     -(void)datePickerValueChanged:(UIDatePicker*)sender{
     [self updateReportlabel: sender];

}

// for change the year and month
 -(void)updateReportlabel:(UIDatePicker*)sender{
  NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  [dateFormat setDateFormat:@"MMMM dd, yyyy"];
  dateObjectReportedUILabel.text = [dateFormat stringFromDate:sender.date];
      // call the update time method
      [self updateTimelabel: sender];

 }
 // for change the time 
-(void)updateTimelabel:(UIDatePicker*)sender{
  NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  [dateFormat setDateFormat:@"HH:mm"];
  yourFirstLabel.text = [dateFormat stringFromDate:sender.date];

 }