在SwiftUI中的DatePicker上设置默认日期?

时间:2020-03-02 17:53:22

标签: swiftui

我在VStack中有这个DatePicker,工作正常:

VStack {
    DatePicker(selection: $birthDate, displayedComponents: .date) {
                Text("")
            }.padding(10)
            .labelsHidden()
            .datePickerStyle(WheelDatePickerStyle())
}

我希望能够将默认日期设置为过去的40年,这样用户就不必将年份至今为止(大多数人不是新生儿)。如this SO answer所示,可以使用DatePicker完成此操作。我不知道如何在SwiftUI中实现它。感谢您的帮助。

2 个答案:

答案 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())
}