我在VStack中有这个DatePicker,工作正常:
VStack {
DatePicker(selection: $birthDate, displayedComponents: .date) {
Text("")
}.padding(10)
.labelsHidden()
.datePickerStyle(WheelDatePickerStyle())
}
我希望能够将默认日期设置为过去的40年,这样用户就不必将年份至今为止(大多数人不是新生儿)。如this SO answer所示,可以使用DatePicker完成此操作。我不知道如何在SwiftUI中实现它。感谢您的帮助。
答案 0 :(得分:3)
为什么不像这样?
struct ContentView: View {
@State private var birthDate: Date = Calendar.current.date(byAdding: DateComponents(year: -40), to: Date()) ?? Date()
var body: some View {
VStack {
DatePicker(selection: $birthDate, displayedComponents: .date) {
Text("")
}
.padding(10)
.labelsHidden()
.datePickerStyle(WheelDatePickerStyle())
}
}
}
答案 1 :(得分:1)
您应采用以下方式初始化birthDate
(经过测试并与Xcode 11.2 / iOS 13.2配合使用)
@State private var birthDate: Date
init() {
_birthDate = State<Date>(initialValue: Calendar.current.date(byAdding:
DateComponents(year: -40), to: Date()) ?? Date())
}