我是新手,我想让选择器选择通知的频率。我想将用户可以选择的最大数量设置为2个小时,但是我在做什么却没人知道这是否可行?
这是我所做的:
let minutePicker = UIDatePicker()
minutePicker.datePickerMode = .countDownTimer
minutePicker.minuteInterval = 10 //sets the interval of minutes.
minutePicker.countDownDuration = 30*60 //set starting value.
minutePicker.maximumDate = Date(timeInterval: 60*60*2, since: Date())
您可以执行以下操作:
let minutePicker = UIDatePicker()
minutePicker.datePickerMode = .countDownTimer
minutePicker.addTarget(self, action: #selector(respondToChanges(picker:)), for: .allEvents)
minutePicker.minuteInterval = 10
var components = DateComponents()
components.minute = 30
let date = Calendar.current.date(from: components)!
minutePicker.setDate(date, animated: true)
然后,您必须创建一个responseToChanges方法。可能的实现如下所示:
@objc
func respondToChanges(picker: UIDatePicker) {
if (picker.countDownDuration > 7200) { //countDownDuration has to be in seconds
var components = DateComponents()
components.hour = 2
let date = Calendar.current.date(from: components)!
picker.setDate(date, animated: true)
}
}
文档说:“在倒数计时器模式中,最小和最大日期被忽略”。因此,使用我的解决方案,您可以将时间手动设置为2小时,每次用户选择2小时以上。