Pair of DatePickers SwiftUI



我的 SwiftUI 应用程序中有一对 DatePicker,它表示某个时间段的开始和结束。

预期的行为是结束日期永远不会早于开始日期。因此,当 DatePicker 更改startDateTime时,endDateTime的值应更改。我不确定究竟该如何做到这一点,因为我不相信DatePicker提供了类似onValueChanged的东西。

法典

struct ContentView: View {
@State var startDateTime: Date = Date()
@State var endDateTime: Date = Date()
var body: some View {
Form {
DatePicker(selection: $startDateTime, in: Date.distantPast...Date.distantFuture) {
Text("Start")
}
DatePicker(selection: $endDateTime, in: startDateTime...Date.distantFuture) {
Text("End")
}
}
}
}

这是可能的方法(经过测试并与Xcode 11.2/iOS 13.2配合使用(

Form {
DatePicker(selection: Binding<Date>(
get: { self.startDateTime },
set: { self.startDateTime = $0
if self.endDateTime < $0 {
self.endDateTime = $0
}
}), in: Date.distantPast...Date.distantFuture) {
Text("Start")
}
DatePicker(selection: $endDateTime, in: startDateTime...Date.distantFuture) {
Text("End")
}
}

最新更新