Как передать значение переменной привязки в другую переменную привязки в двух DatePicker в SwiftUI? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть два DatePicker в Form.Дата начала второго зависит от даты первого DatePicker.Это может быть решено с помощью PartialRangeFrom, но объект привязки, используемый в качестве выделения, не изменяется.

struct ContentView: View {

    @State private var startDate: Date = Date()
    @State private var endDate: Date = Date()

    var body: some View {
        Form {
            DatePicker(selection: $startDate, displayedComponents: .date, label: { Text("Start date") })

            DatePicker(selection: $endDate, in: startDate..., displayedComponents: .date, label: { Text("End date") })

        }
    }
}

Второй выбор даты действительно изменяется и обновляется при изменении первого средства выбора даты, но метка, связанная с$endDate, не изменяется, он все еще продолжает отображать значение инициализации.

Как я могу сделать что-то вроде self.endDate = self.startDate в метке и обновлении колеса в то же самое время, когда меняется первый указатель даты?

1 Ответ

0 голосов
/ 20 сентября 2019

Во-первых, создайте новую struct , которая имеет свойства: startdate и enddate, и внутри этой структуры используется наблюдатель func didSet .Вот пример кода.

struct ContentView: View {
    @State var model = DateRangeModel()

    var body: some View {
        Form {
            DatePicker(selection: $model.startDate, displayedComponents: .date, label: { Text("Start date") })

            DatePicker(selection: $model.endDate, in: model.startDate..., displayedComponents: .date, label: { Text("End date") })

        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct DateRangeModel {
    var endDate: Date = Date()
    var startDate: Date = Date() {
        didSet {
             endDate = startDate
        }
       }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...