尝试在SwiftUI中构建一个简单的日期选择控件,该控件具有3天(最初是昨天,今天,明天)的三段式Picker样式的Picker以及可沿时间上移或下移的V形按钮,我被困在选择器的文本标签会奇怪地更新。
如果我增加状态变量,则所有三个选择器文本标签将按预期更新。如果我减小状态变量,则仅前两个Text标签会更新。
这是一个显示问题的简单例子。我正在使用Xcode版本11.1(11A1027)和iOS 13.1模拟器。如果您继续轻按“下一步”按钮,则三个标签均会按预期更新,但是请轻按“上一个”,第三个标签不会更新。再次轻按“下一步”,所有这三个都回到了正确的状态。
我的真实应用对包含日期数组的数据模型使用了ForEach迭代,但是这个简单的示例显示了相同的行为。
struct ContentView: View {
@State var middleValue = 2
@State var selectedValue = 1
var body: some View {
VStack {
Picker("Item", selection: $selectedValue) {
Text("\(middleValue - 1)").tag(0)
Text("\(middleValue)").tag(1)
Text("\(middleValue + 1)").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
HStack {
Button("Previous") {
self.middleValue -= 1
}
Spacer()
Button("Next") {
self.middleValue += 1
}
}
Spacer()
}
.padding()
}
}
有什么想法吗?在此期间,我使用带修饰符的按钮构建了自己的细分控件,该修饰符提供了相似的UI,但是我很困惑为什么这不适用于Picker的SegmentedPickerStyle。