【问题标题】:DatePicker's selection is different from the returned dateDatePicker 的选择与返回的日期不同
【发布时间】:2019-09-16 06:18:18
【问题描述】:

选择的是 9/16/21,但返回的日期是 9/16/20。返回的日期没有以某种方式同步。这里没有什么特别的,只是 DatePicker 的标准用法。它是 DatePicker 的错误吗?如何解决这个问题?

DatePicker(selection: $model.returnDate, in: model.returnDateRange, displayedComponents: .date) {
                Text("Return Date")
}

Full Source Code

如何重现:

将第一个日期选择器的年份改为2020年,如果你想再做一次,只需将第一个日期选择器的日期改为2021、2022...

【问题讨论】:

  • 这似乎是一个组合问题。选择器正在返回正确的数据。您可以通过打印 returnDate 属性的 didSet { ... } 中的值来验证这一点。实际上,如果您在 didSet 闭包中设置消息文本,它就可以正常工作。似乎水槽关闭执行得太快了。我暂时没时间了,但稍后会继续;-)

标签: swiftui


【解决方案1】:

我认为这是 DatePicker 的错误。

可以通过使用出发发布者更新返回日期来解决。

DatePicker(selection: $model.returnDate, in: model.returnDateRange, displayedComponents: .date) {
        Text("Return Date")
    }
    .onReceive(model.$departureDate, perform:model.updateReturnDate)


func updateReturnDate(_ date: Date) {
    if date > returnDate {
        returnDate = date
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多