我在我的应用中实现了一个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
}
答案 0 :(得分:0)
如果您在代码中设置了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,因为它的初始化相对昂贵。
答案 1 :(得分:0)
当您更改日期(valueChanged
)时,您会收到回调。因此,如果您在不更改日期的情况下解雇选择器,则无法获得此信息。
您必须知道提交日期选择器之前的日期,以防您未设置日期,或者如果您要处理它,则需要取消选择。
创建一个var (我通常称之为 now
),其中存储currentDate(NSDate()
)并将其设置为{{ 1}} date
的属性,因此您知道自从显示默认的datePicker日期以来提交选择器的日期。