![](/img/trans.png)
[英]Dismiss SwiftUI DatePicker when user taps on already selected date
[英]Change selected date format from DatePicker SwiftUI
我能想到的实现此目的的唯一方法是创建我自己的自定义 DatePicker 视图,并在 TextField 上使用 onAppear 来更新 @State selectedDateText: String 变量以在 TextField 中显示。 这感觉像是一个 hack,我几乎不好意思发布它,但它有效。 一般来说,我是 Swift 和 iOS 编程的新手,所以我相信有人会提出更好的答案,所以我会提供它的价值。 我的自定义视图是这样的:
struct CustomDatePicker: View {
@Binding var date: Date
@State private var showPicker: Bool = false
@State private var selectedDateText: String = "Date"
private var selectedDate: Binding<Date> {
Binding<Date>(get: { self.date}, set : {
self.date = $0
self.setDateString()
})
} // This private var I found… somewhere. I wish I could remember where
// To take the selected date and store it as a string for the text field
private func setDateString() {
let formatter = DateFormatter()
formatter.dateFormat = "MMMM dd, yyyy"
self.selectedDateText = formatter.string(from: self.date)
}
var body: some View {
VStack {
HStack {
Text("Date:")
.frame(alignment: .leading)
TextField("", text: $selectedDateText)
.onAppear() {
self.setDateString()
}
.disabled(true)
.onTapGesture {
self.showPicker.toggle()
}
.multilineTextAlignment(.trailing)
}
if showPicker {
DatePicker("", selection: selectedDate,
displayedComponents: .date)
.datePickerStyle(WheelDatePickerStyle())
.labelsHidden()
}
}
}
}
编辑:我想出了我从哪里得到私人 var 代码。 它来自这篇文章: How to detect a value change of a Datepicker using SwiftUI and Combine?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.