UIDatePicker 无法识别它当前显示的是当前日期
UIDatePicker doesn't recognise that it currently shows the current date
我的 swift 应用程序使用 UIDatePicker 供用户 select 约会。但是,我想对其进行设置,以便在用户忘记插入时显示 "No date inserted"。
问题是,当我设置 if
语句根据 datePicker 的日期是否等于当前日期显示警告时,它根本无法识别它。这是我的代码:
if datePicker.date == NSDate() {
warnL.text = "NO DATE INSERTED"
}
我该怎么办?
任何帮助将不胜感激!谢谢。
NSDate
return 所有日期,包括时间,因此它永远不会等于您 datePicker
中的时间。
您可以定义变量来告诉您日期是否已更改:
var dateWasChanged = false
然后您可以为更改事件注册处理程序:
func viewDidLoad() {
datePicker.addTarget(self, action: #selector(YourViewController.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
func handleDatePicker() {
dateWasChanged = true
}
之后您可以检查 dateWasChanged
是否为 true
并显示您的信息。
有一种更简单的方法可以知道日期是否是今天,即使用 NSCalendar
:
上的方法
if NSCalendar.currentCalendar().isDateInToday(datePicker.date) {
warnL.text = "NO DATE INSERTED"
}
它负责处理时区、区域设置和日历类型。
我的 swift 应用程序使用 UIDatePicker 供用户 select 约会。但是,我想对其进行设置,以便在用户忘记插入时显示 "No date inserted"。
问题是,当我设置 if
语句根据 datePicker 的日期是否等于当前日期显示警告时,它根本无法识别它。这是我的代码:
if datePicker.date == NSDate() {
warnL.text = "NO DATE INSERTED"
}
我该怎么办? 任何帮助将不胜感激!谢谢。
NSDate
return 所有日期,包括时间,因此它永远不会等于您 datePicker
中的时间。
您可以定义变量来告诉您日期是否已更改:
var dateWasChanged = false
然后您可以为更改事件注册处理程序:
func viewDidLoad() {
datePicker.addTarget(self, action: #selector(YourViewController.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
func handleDatePicker() {
dateWasChanged = true
}
之后您可以检查 dateWasChanged
是否为 true
并显示您的信息。
有一种更简单的方法可以知道日期是否是今天,即使用 NSCalendar
:
if NSCalendar.currentCalendar().isDateInToday(datePicker.date) {
warnL.text = "NO DATE INSERTED"
}
它负责处理时区、区域设置和日历类型。