Пара DatePickers SwiftUI - PullRequest
       0

Пара DatePickers SwiftUI

2 голосов
/ 01 февраля 2020

В моем приложении SwiftUI есть пара DatePickers, которые обозначают начало и конец некоторого периода времени.

Предполагается, что дата окончания никогда не предшествует дате начала. Таким образом, значение endDateTime должно измениться, когда DatePicker изменяет startDateTime. Я не уверен, как именно go об этом, так как я не верю, что 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")
            }
        }

    }
}

1 Ответ

2 голосов
/ 01 февраля 2020

Здесь возможен подход (проверено и работает с 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")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...