我想做一个员工考勤应用程序。我有两个时间选择器,我使用 UIDatePickerMode.time。第一个时间选择器用于选择开始时间,第二个时间选择器用于选择结束时间,
示例:开始时间:上午 8:00,结束时间:下午 5:00。
如何将第二个时间选择器设置为仅允许选择上午 8:01 以后的时间?因此用户将无法选择更早的时间,而只能选择 future 的时间,
示例:开始时间:上午 8:00,结束时间:上午 7:00。我该如何避免这种情况?
请帮忙。谢谢。
最佳答案
您可以在第一个选择器中选择行后立即在 UIPickerViewDelegate
方法中更新第二个选择器的数据:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == startPicker {
// update endPicker.minimumDate
endPicker.minimumDate = Calendar.current.date(byAdding: .minute, value: 1, to: pickerView.date)
// don't forget to add some checks (for example if your startPicker time is set to 23:59)
}
}
更新:
对于UIDatePicker
(不是UIPickerView
):
startPicker.addTarget(self, action: #selector(datePickerValueChanged(_:)), for: .valueChanged)
并在方法中做类似的事情
func datePickerValueChanged(_ datePicker: UIDatePicker) {
endPicker.minimumDate = Calendar.current.date(byAdding: .minute, value: 1, to: datePicker.date)
// don't forget to add some checks (for example if your startPicker time is set to 23:59)
}
关于iOS Swift - 设置开始时间和结束时间(仅限 future 时间)UIDatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334427/