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

问题描述:

我想制作员工考勤应用程序。我有两个时间选择器,我使用UIDatePickerMode.time。第一次选择器是供用户选择开始时间,第二时间选择器用于完成时间,iOS Swift - 设置开始时间和结束时间(仅限Fututre时间)UIDatePicker

示例:开始时间:上午8:00,完成时间:下午5:00。

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

示例:开始时间:上午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) 
} 
+0

您好Aleksandr,感谢您的回复。我正在使用UIDatePicker而不是UIPickerView。它没有委托方法。有没有使用UIDatePicker的另一种方法?如果不可能,我想我将不得不使用UIPickerView显示时间,并使用您的代码来设置最短时间。非常感谢。 – TSM

+0

@TSM对不起,我的错误。我已经更新了我的答案。希望能帮助到你! –

+0

它工作。谢谢Aleksandr! – TSM