SwiftUI中如何禁用DatePicker的未来日期选择功能
在SwiftUI自定义DatePicker中禁用未来日期选择
直接利用SwiftUI DatePicker的maximumDate参数就能实现需求,把该参数设为当前日期(Date()),系统会自动禁用所有未来日期的选择项,无需额外处理用户输入的校验逻辑。
修改后的完整代码如下:
struct DatePickerView: View { @State var searchDate = Date() let title = "Select a date" let dateChanged: (_ date: Date) -> Void var body: some View { VStack { DatePicker( selection: Binding(get: { self.searchDate }, set: { newVal in self.searchDate = newVal dateChanged(searchDate) }), displayedComponents: .date, maximumDate: Date() // 新增此参数限制最大可选日期为今天 ) { Text(title) .font(.headline) } .background(.bar) } } }
额外提醒:如果你的初始searchDate有可能被设置为未来日期,建议初始化时将其修正为当前日期,避免初始值不符合限制:
// 比如原初始值是未来日期,可改成 @State var searchDate = min(yourOriginalDate, Date())
内容的提问来源于stack exchange,提问作者Anupam Mishra
相关产品推荐
相关产品推荐

