Ios SwiftUI日期选择器并不总是更新状态<;日期>;变量
由于某些原因,Ios SwiftUI日期选择器并不总是更新状态<;日期>;变量,ios,swift,swiftui,Ios,Swift,Swiftui,由于某些原因,DatePicker并不总是更新与其关联的日期变量。我做错什么了吗?我基本上可以随机滚动,有时我可以看到显示当前选择日期的文本(var$entryDate)与DatePicker显示我选择的内容不同-我的代码: struct addView: View { @State private var entryDate: Date = Date() var body: some View { VStack { HStack {
DatePicker
并不总是更新与其关联的日期变量。我做错什么了吗?我基本上可以随机滚动,有时我可以看到显示当前选择日期的文本(var$entryDate
)与DatePicker
显示我选择的内容不同-我的代码:
struct addView: View {
@State private var entryDate: Date = Date()
var body: some View {
VStack {
HStack {
Spacer()
DatePicker("_", selection: $entryDate, in: ...Date(), displayedComponents: .date)
.labelsHidden()
.datePickerStyle(WheelDatePickerStyle())
.frame(minWidth: 0, maxWidth: .infinity, alignment: .center)
.environment(\.locale, Locale.current)
Spacer()
}
Text("\(entryDate)")
}
}
}
这是一个已知的SwiftUI错误。 我通过一些变通办法解决了这个问题:
@State private var refresh = false
DatePicker("_" + (refresh ? "" : " "), selection: $entryDate, in: ...Date(), displayedComponents: .date)
.labelsHidden()
.datePickerStyle(WheelDatePickerStyle())
.frame(minWidth: 0, maxWidth: .infinity, alignment: .center)
.environment(\.locale, Locale.current)
在你的观点的最后:
.onReceive(self.$refresh) { _ in
self.refresh.toggle()
}
甚至应该使用labelsHidden()。使用您的建议会导致:
无法将类型为“(\u)->()”的值转换为预期的参数类型“(\u.Output)->Void”