我需要一个MultiDatePicker
的初步选择。我试着在init
中分配它,正如您在下面和onAppear
中看到的那样。在这两种情况下,取消初始选择都不起作用,它始终停留在dates
中。怎么解决这个问题?
import SwiftUI
struct ContentView: View {
@State private var dates: Set<DateComponents>
init() {
let now = Calendar.current.dateComponents([.year, .month, .day], from: .now)
_dates = State(initialValue: [now])
}
var body: some View {
VStack {
MultiDatePicker("", selection: $dates)
.onChange(of: dates) {_ in
print("Selection changed")
}
Text(datesStr)
}.padding()
}
var datesStr: String {
dates
.map{ Calendar.current.date(from: $0)!.formatted(date: .numeric, time: .omitted) }
.joined(separator: "\n")
}
}
顺便说一句,这个一行也有同样的问题(因为它不是动态的,所以不能满足我的需要):
@State private var dates: Set<DateComponents> = [Calendar.current.dateComponents([.year, .month, .day], from: .now)]
在Xcode 14.0.1和14.1 beta 3中测试。
发布于 2022-10-06 16:59:39
只需使用[.calendar, .era, .year, .month, .day]
而不是[.year, .month, .day]
。这是DateComponents
格式MultiDatePicker
所期望的。
我刚刚找到了这个解决方案,因为我想知道为什么相同的DateComponents
可以在Set
中出现两次(正如您所知道的那样,它只允许唯一的元素)。他们不是完全一样的。
https://stackoverflow.com/questions/73977262
复制相似问题