首页 > 解决方案 > UIDatePicker EventValueChanged 未显示实际日期/时间

问题描述

我有两个 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 事件的头文件。

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

标签: iosobjective-cuidatepicker

解决方案


改变你的行动方法

    - (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];

 }

推荐阅读