更改日期时,SwiftUIDatePicker在中短日期格式之间跳转

(使用 Xcode 12.3 和 iOS 14.3)

我使用DatePicker具有默认样式 ( DefaultDatePickerStyle)的组件来显示和编辑日期:该组件在标签中显示当前日期值,并在点击该标签时弹出日历。到现在为止还挺好。

当我更改日期时(以编程方式或在 UI 中手动更改),组件会不规律地更改其标签的日期格式。它似乎在 的.short.medium值之间切换DateFormatter.Style。请注意,日期格式不能以编程方式设置,它是DatePicker.

下面是一个例子:

DatePicker显示“2021年2月7日”; 我通过使用按钮减去一天来更改日期,导致组件显示“2/6/21”;再次减去一天,显示会更改为“2021 年 2 月 5 日”等。有时它会为几个日期保持相同的格式,但大多数情况下它会在每次更改时切换。

示例代码:

struct DateView: View {
  @State var date = Date()

  var body: some View {
    VStack(spacing: 20) {
      Button("-1 day") {
        date.addTimeInterval(-24*60*60)
      }
      Button("+1 day") {
        date.addTimeInterval(24*60*60)
      }
      DatePicker(
        "Date",
        selection: $date,
        displayedComponents: .date
      ).labelsHidden()
    }
  }
}

省略displayedComponentslabelsHidden对该问题没有影响。

重复打开日历弹出窗口并选择日期时也会出现同样的问题:关闭弹出窗口后,显示的日期有时是短格式,有时是中等格式。

知道那里发生了什么吗?

回答

看起来像一个错误。这是一个找到的解决方法(使用 Xcode 13beta / iOS 15 测试)

  DatePicker(
    "Date",
    selection: $date,
    displayedComponents: .date
  )
  .labelsHidden()
  .id(date)             // << here !!


以上是更改日期时,SwiftUIDatePicker在中短日期格式之间跳转的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>