【问题标题】:SwiftUI DatePicker does not always update State<Date> variableSwiftUI DatePicker 并不总是更新 State<Date> 变量
【发布时间】:2020-05-05 15:10:56
【问题描述】:

由于某种原因,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)")
      }
  }
}

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    这是一个已知的 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()
    }
    

    甚至应该使用您的 labelsHidden()。

    【讨论】:

    • 使用您的建议结果:Cannot convert value of type '(_) -&gt; ()' to expected argument type '(_.Output) -&gt; Void'
    【解决方案2】:

    这里有一个解决方法:

    @State private var refresh: Bool = false
    
    DatePicker("_"  + (refresh ? "" : " "), selection: $entryDate, displayedComponents: [.hourAndMinute])
                    .datePickerStyle(.wheel)
                    .labelsHidden()
    

    然后,每当您在选择器之外编辑 $entryDate 时,调用

    self.refresh.toggle()
    

    DatePicker 会正确更新。

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多