Я не смог найти способ с помощью DatePicker по умолчанию, поэтому я взял код из Изменить выбранный формат даты из DatePicker SwiftUI
внес некоторые изменения, чтобы он работал. Этот CustomDatePicker должен делать то, о чем вы просили, даже внутри формы.
struct CustomDatePicker: View {
@State var text: String = "Date"
@Binding var date: Date
@State var formatString: String = "yyyy-MM-dd"
@State private var disble: Bool = false
@State private var showPicker: Bool = false
@State private var selectedDateText: String = "Date"
let formatter = DateFormatter()
private func setDateString() {
formatter.dateFormat = formatString
self.selectedDateText = formatter.string(from: self.date)
}
var body: some View {
VStack {
HStack {
Text(text).frame(alignment: .leading)
Spacer()
Text(self.selectedDateText)
.onAppear() {
self.setDateString()
}
.foregroundColor(.blue)
.onTapGesture {
self.showPicker.toggle()
}.multilineTextAlignment(.trailing)
}
if showPicker {
DatePicker("", selection: Binding<Date>(
get: { self.date},
set : {
self.date = $0
self.setDateString()
}), displayedComponents: .date)
.datePickerStyle(WheelDatePickerStyle())
.labelsHidden()
}
}
}
}
struct ContentView: View {
@State var date = Date()
var body: some View {
Form {
Section {
CustomDatePicker(text: "my date", date: $date, formatString: "yyyy-MM-dd")
Text("test")
}
}
}