是否可以使用绑定设置SwiftUI DatePicker minimumDate?

时间:2019-07-12 02:02:29

标签: swiftui

我正在尝试使用@Binding和@State在SwiftUI中设置日期选择器的最小日期值。

我有三个步进器,一个步进数天,一个步进数小时,一个步进数分钟。这些用于设置DateComponents的值。

我想看到的是使用步进器将DatePicker调整为最小日期和时间。这可能吗?

我已经编辑了这篇文章,并删除了所有代码示例,因为它们与解决方案无关。这些问题是由于不建议使用的DatePicker初始化程序代码引起的。请参阅下面的答案。

2 个答案:

答案 0 :(得分:0)

BindingView与某些状态之间的双向连接。它允许View修改状态。

DatePicker不会修改其最小日期设置,因此没有理由将最小日期设置设为Binding

定义使用minimumDateTimedayshours状态属性的minutes函数的解决方案是正确的解决方案。它会产生构建错误吗?如果是这样,请编辑您的问题以包含确切的错误。

答案 1 :(得分:0)

这是解决方案。在SwiftUI DatePickers中不建议使用最小日期和最大日期。更改和解决方案已发布在此处:https://sarunw.com/posts/swiftui-changes-in-xcode-11-beta-4

如果链接不起作用,请参见以下示例。

DatePicker不推荐使用的初始化程序 具有minimumDate和maximumDate的初始化器已消失。现在,我们使用ClosedRange,PartialRangeThrough和PartialRangeFrom对其进行了初始化。

我们使用PartialRangeFrom作为minimumDate。

elasticsearch:
             host: "localhost"
             schema: "http"
             port_one: 9200
             port_two: 9201
             index: "test_dea"
             clustername: "testing_elasticsearch"

我们使用PartialRangeThrough作为maximumDate。

DatePicker("Minimum Date",
    selection: $selectedDate,
    in: Date()...,
    displayedComponents: [.date])

如果您要同时执行minimumDate和maximumDate,请使用ClosedRange

DatePicker("Maximum Date",
    selection: $selectedDate,
    in: ...Date(),
    displayedComponents: [.date])

在所有示例中,可以用类型为Date的绑定替换Date()。