Причина в постоянной ForEach(range)
. Если предполагается, что что-то изменилось внутри ForEach
, используйте динамическую c последовательность данных.
Вот решение для вашего случая. Протестировано с 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")
}
}
}
}