简体   繁体   English

SwiftUI DatePicker 并不总是更新 State<date> 多变的</date>

[英]SwiftUI DatePicker does not always update State<Date> variable

For some reason DatePicker does not always update the date var associated with it.由于某种原因DatePicker并不总是更新与之关联的日期变量。 Am I doing something wrong?难道我做错了什么? I can basically scroll around randomly and sometimes I can get to a point where my Text showing the current picked date ( var $entryDate ) differs from what the DatePicker shows that I have selected - my code:我基本上可以随机滚动,有时我可以到达显示当前选择日期( 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)")
      }
  }
}

This is a known SwiftUI Bug.这是一个已知的 SwiftUI 错误。 I solved it with a little workaround:我用一些解决方法解决了它:

@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)

And at the end of your View:在您的视图结束时:

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

Should even work with your labelsHidden().甚至应该与您的标签隐藏()一起使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM