SwiftUI DatePicker не всегда обновляет переменную State <Date> - PullRequest
1 голос
/ 05 мая 2020

По какой-то причине DatePicker не всегда обновляет связанную с ним переменную даты. Я делаю что-то неправильно? Я могу в основном прокручивать случайным образом, и иногда я могу добраться до точки, где мой текст, показывающий текущую выбранную дату (var $entryDate), отличается от того, что DatePicker показывает, что я выбрал - мой код:

struct addView: View {

  @State private var entryDate: Date = Date()

  var body: some View {
      VStack {
        HStack {
          Spacer()
          DatePicker("_", selection: $entryDate, in: ...Date(), displayedComponents: .date)
            .labelsHidden()
            .datePickerStyle(WheelDatePickerStyle())
            .frame(minWidth: 0, maxWidth: .infinity, alignment: .center)
            .environment(\.locale, Locale.current)
          Spacer()
        }
        Text("\(entryDate)")
      }
  }
}

1 Ответ

0 голосов
/ 27 мая 2020

Это известная ошибка SwiftUI. Я решил это с помощью небольшого обходного пути:

@State private var refresh = false

      DatePicker("_"  + (refresh ? "" : " "), selection: $entryDate, in: ...Date(), displayedComponents: .date)
        .labelsHidden()
        .datePickerStyle(WheelDatePickerStyle())
        .frame(minWidth: 0, maxWidth: .infinity, alignment: .center)
        .environment(\.locale, Locale.current)

И в конце вашего просмотра:

.onReceive(self.$refresh) { _ in
   self.refresh.toggle()
}

Должен даже работать с вашим labelHidden ().

...