ios - 从 DatePicker SwiftUI 更改选定的日期格式
问题描述
有没有办法格式化日期?(从图片中箭头指示的位置)我知道它是根据语言环境格式化的,但有没有办法自己格式化?
struct ContentView: View {
@State private var selectedDate = Date()
var body: some View {
Form {
DatePicker(selection: $selectedDate, in: ...Date(), displayedComponents: .date) {
Text("From*")
}
}
}
}
解决方案
我能想到的唯一方法是创建我自己的自定义 DatePicker 视图并在 TextField 上使用 onAppear 来更新 @State selectedDateText: String 变量以在 TextField 中显示。这感觉就像一个黑客,我几乎不好意思发布它,但它有效。一般来说,我是 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 代码。来自这篇文章:如何使用 SwiftUI 和 Combine 检测 Datepicker 的值变化?
推荐阅读
- git - 为什么 git checkout 为一些未更改的文件打印“M”?
- r - 在并行`foreach`循环中更新单个公共变量
- python - 如何比较 python 中 ser.readline() 的输出?
- java - 如何将arraylist数据存储到数据库中
- rust - 使用包含的文本作为宏参数
- node.js - 如何在数组的 mongodb 的子字段中进行聚合和分组?
- javascript - 执行脚本后页面底部消失
- javascript - PHP JS如何搜索CSV文件列的最大值
- java - 匿名类,还是观察者模型中的一个 ActionEvent?
- java - 需要帮助将二维字符串数组向左移动