SwiftUI @State in der ganzen App benutzen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Dazu musst du mit @Binding arbeiten, damit der State nicht lokal in der Struktur bleibt.

In der ersten View definierst du es als @State, gibst aber dein Wert – bzw. die Referenz – mit $value an die zweite View weiter:

struct FirstView: View {
  @State var value: Int = 0

  var body: some View {
    VStack {
      SecondView(value: $value)
    }
  }
}

In der zweiten View gibst du die Variable dann als Binding an:

struct SecondView: View {
  @Binding var value: Int

  var body: some View {
    // hier kann value geändert werden und die
    // Änderungen werden an FirstView hochgereicht
  }
}

Hier findest du auch kein kleines Tutorial dazu:

https://www.ralfebert.de/ios/swiftui-bindings/

Wenn du statt primitiven Datentypen ganze Strukturen hast, die in mehreren Views benutzt werden, solltest du dich auch mit ObservableObject beschäftigen:

https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app

Dort kannst du steuern, welche Properties veröffentlicht werden und welche nicht.

Woher ich das weiß:eigene Erfahrung