首页 > 解决方案 > 如何让 DatePicker 在表单内保持打开状态?

问题描述

如何使 DatePicker 保持打开状态?

我将 DatePicker 放在 Form 中,所以我必须点击表单才能打开 DatePicker。但相反,我希望它始终处于打开状态,即使用户没有点击表单。无论如何都会实现这一目标吗?

这是我当前的代码。

struct ContentView: View {
    @State private var selectedDate = Date()
    var body: some View {
        VStack{
            Form{
                DatePicker(selection: self.$selectedDate, in: Date()..., displayedComponents: .date, label: { Text("Select a date") })
                  }
            }
        }
    }

这就是我尝试过的。使用这种方法

  struct ContentView: View {
    @State private var pickerReset = UUID()
    
    @State private var selectedDate = Date()
    var body: some View {
        VStack{
            Form{
                DatePicker(selection: self.$selectedDate, in: Date()..., displayedComponents: .date, label: { Text("Select a date") }).id(self.pickerReset)
                  }
        }.onAppear{
            //I tired to show datePicker with UUID(), but
            //this line of code ratherly hide the datepicker
            self.pickerReset = UUID()
        }
        }
}

标签: swiftui

解决方案


您可以尝试datePickerStyle明确设置:

struct ContentView: View {
    @State private var selectedDate = Date()
    var body: some View {
        VStack {
            Form {
                DatePicker("", selection: $selectedDate, in: Date()..., displayedComponents: .date)
                    .datePickerStyle(WheelDatePickerStyle())
            }
        }
    }
}

如果您愿意,您也可以使用第二个 disabledDatePicker来显示所选日期 - 表现得更像表单中的标准DatePicker:

struct ContentView: View {
    @State private var selectedDate = Date()
    var body: some View {
        VStack {
            Form {
                VStack {
                    DatePicker("Select a date", selection: $selectedDate, in: Date()..., displayedComponents: .date)
                        .disabled(true)
                    DatePicker("", selection: $selectedDate, in: Date()..., displayedComponents: .date)
                        .datePickerStyle(WheelDatePickerStyle())
                }
            }
        }
    }
}

推荐阅读