我正在尝试使用@Binding和@State在SwiftUI中设置日期选择器的最小日期值。
我有三个步进器,一个步进数天,一个步进数小时,一个步进数分钟。这些用于设置DateComponents的值。
我想看到的是使用步进器将DatePicker调整为最小日期和时间。这可能吗?
我已经编辑了这篇文章,并删除了所有代码示例,因为它们与解决方案无关。这些问题是由于不建议使用的DatePicker初始化程序代码引起的。请参阅下面的答案。
答案 0 :(得分:0)
Binding
是View
与某些状态之间的双向连接。它允许View
修改状态。
DatePicker
不会修改其最小日期设置,因此没有理由将最小日期设置设为Binding
。
定义使用minimumDateTime
,days
和hours
状态属性的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()。