iOS Swift - 设置开始时间和结束时间(仅限Fututre时间)UIDatePicker

时间:2017-09-21 02:21:56

标签: ios swift date time datepicker

我想制作员工出勤应用。我有两个时间选择器,我使用UIDatePickerMode.time。第一次选择器供用户选择开始时间,第二次选择器用于完成时间,

示例:开始时间:上午8:00,结束时间:下午5:00。

如何将第二次选择器设置为仅允许从上午8:01开始选择时间?因此,用户将无法选择更早的时间,只能选择未来的时间,

示例:开始时间:上午8:00,结束时间:上午7:00。我该如何避免这种情况?

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在选择第一个选择器中的行后立即以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)
}