为什么SwiftUI不更新嵌套ForEach循环中的值?
我有这个密码。 这很简单。点击按钮时,我将行更改为一行 但只有行“works”中的输出有效,另一个始终为0 我做错了什么 您可以复制并粘贴代码以再现错误为什么SwiftUI不更新嵌套ForEach循环中的值?,swiftui,Swiftui,我有这个密码。 这很简单。点击按钮时,我将行更改为一行 但只有行“works”中的输出有效,另一个始终为0 我做错了什么 您可以复制并粘贴代码以再现错误 class GlobalData : ObservableObject { @Published var rows : Int = 0 } struct ContentView: View { @ObservedObject var globalData = GlobalData() var body: som
class GlobalData : ObservableObject {
@Published var rows : Int = 0
}
struct ContentView: View {
@ObservedObject var globalData = GlobalData()
var body: some View {
VStack {
Text("\(self.globalData.rows)") // works...
ForEach (0..<4) { y in
HStack () {
ForEach (0..<3) { x in
ForEach (0..<3) { index -> Text in
Text("\(self.globalData.rows)") // shows always 0
}
}
}
}
Button(action: {
self.globalData.rows = self.globalData.rows + 1
}) {
Text("Increase rows")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
类GlobalData:ObserveObject{
@已发布的变量行:Int=0
}
结构ContentView:View{
@ObservedObject变量globalData=globalData()
var body:一些观点{
VStack{
Text(\(self.globalData.rows)///works。。。
ForEach(0..原因是常量ForEach(范围)
。如果假设在ForEach
中有任何更改,请使用动态数据序列
这是一个针对您的案例的解决方案。使用Xcode 11.4/iOS 13.4进行了测试
struct ContentView: View {
@ObservedObject var globalData = GlobalData()
var body: some View {
VStack {
Text("\(self.globalData.rows)") // works...
ForEach (Array(0...3), id: \.self) { y in
HStack () {
ForEach (Array(0...2), id: \.self) { x in
ForEach (Array(0...2), id: \.self) { index -> Text in
Text("\(self.globalData.rows)") // works ...
}
}
}
}
Button(action: {
self.globalData.rows = self.globalData.rows + 1
}) {
Text("Increase rows")
}
}
}
}