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()
) 并将其设置为 UIDatePicker
的 date
属性,这样您就可以知道选择器的显示日期,因为默认的 datePicker 显示日期是现在。
我在我的应用程序中实现了 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()
) 并将其设置为 UIDatePicker
的 date
属性,这样您就可以知道选择器的显示日期,因为默认的 datePicker 显示日期是现在。