UIDatePicker 不打印日期

UIDatePicker doesn't print out a date

我在我的应用程序中实现了 UIDatePicker。如果我在日期选择器弹出后更改默认日期,日期选择器会返回一个有效日期。但是如果我想选择当前日期(我不必更改日期选择器),日期选择器不会返回日期。 Swift 中是否有人知道此问题的解决方案?

    //Date Picker config.

func datePickerChanged(datePicker:UIDatePicker) {

    var dateFormatter = NSDateFormatter()

    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle

    var strDate = dateFormatter.stringFromDate(datePicker.date)
    dateLabel.text = strDate
}

如果您在代码中设置 UIDatePicker 的日期,它不会 运行 valueChanged 事件。您必须将日期字符串更新提取到单独的方法中并直接更新它。

此外,不要将 UIDatePicker 视为唯一的日期值来源。保持模型独立。

var date = NSDate()

func datePickerChanged(datePicker:UIDatePicker) {
  self.date = datePicker.date
  self.updateDateStringWithDate(self.date)
}

func resetDate() {
  self.date = NSDate()
  self.datePicker.date = self.date
  self.updateDateStringWithDate(self.date)
}

func updateDateStringWithDate(date: NSDate) {
  var dateFormatter = UIDateFormatter()
  dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle

  var strDate = dateFormatter.stringFromDate(date)
  dateLabel.text = strDate
}

另请注意,不要在每次需要时都创建新的 UIDateFormatter,因为它的初始化相对昂贵。

当您更改 日期 (valueChanged) 时,您会收到回调。因此,当您在不更改日期的情况下关闭选择器时,您没有得到它是正常的。

您必须在显示日期选择器之前知道日期,以防您没有设置它,或者如果您处理了它想要取消您的选择。


创建一个var (我通常称之为 now 用于存储currentDate(NSDate() ) 并将其设置为 UIDatePickerdate 属性,这样您就可以知道选择器的显示日期,因为默认的 datePicker 显示日期是现在。