SwiftUI Variablen?

2 Antworten

Du kannst sie entweder direkt an die anderen View als Parameter weitergeben oder du definierst sie als @StateObject und gibst sie als @EnvironmentObject weiter. Dann stehen sie in allen Kind-Views zur Verfügung.

https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-environmentobject-to-share-data-between-views

Woher ich das weiß:Berufserfahrung – Entwickle Anwendungen für iOS, iPadOS und macOS beruflich.

HtmlCoder 
Fragesteller
 23.09.2022, 14:53

Also kannst du mir mal ein Beispiel machen fürs Verständnis

0
Babelfish  23.09.2022, 14:55
@HtmlCoder

Klick auf den Link, da ist ein leicht nachvollziehbares Beispiel.

0
Babelfish  23.09.2022, 14:56
@HtmlCoder

Doch, das funktioniert genau so. Wie sieht denn dein Code aus?

0
HtmlCoder 
Fragesteller
 23.09.2022, 14:57
@Babelfish

ebend nicht ich habe mehre views die sich wechseln wenn ein bestimmter Wert in eine Variable kommt und in diesen views möchte ich jetzt für zwei eine Variable machen

0
Babelfish  23.09.2022, 15:00
@HtmlCoder

Was willst du von mir hören? Du hast dann einen Fehler gemacht und ohne deinen Code kann man da nicht helfen. Beachte, dass du nur Objekte vom Typ ObservableObject weitergeben kannst und keine primitiven Datentypen wie String. Strings oder anderen Typen muss du dann im ObservableObject als @Published deklarieren.

1
HtmlCoder 
Fragesteller
 23.09.2022, 15:19
@Babelfish

Kann ich auch sowas wie

@State var Beispiel1=“1“ (View2: $View2)
0
Babelfish  23.09.2022, 15:42
@HtmlCoder

Was soll das sein oder werden?

Wie ich dir aber schon schrieb, kannst du Variablen auch direkt als Parameter an einer View weitergeben:

import SwiftUI

struct ContentView: View {
    @State var Beispiel1: String = "Hallo Welt!"
    
    var body: some View {
        NavigationView {
            NavigationLink("Nächste View") {
                SecondView(value: Beispiel1)
            }
        }
    }
}

struct SecondView: View {
    let value: String
    
    var body: some View {
        VStack {
            Text(value)
        }
    }
}
0
HtmlCoder 
Fragesteller
 23.09.2022, 16:05
@Babelfish

Wie kann ich programmieren, das wenn ich die App schließe die Änderungen gespeichert werden

0
HtmlCoder 
Fragesteller
 23.09.2022, 16:43
@Babelfish

dazu wie blende ich die Statusleiste also Batterie Uhrzeit usw. aus?

0
Babelfish  23.09.2022, 18:23
@HtmlCoder

Nö, keine Lust mehr. Wer dauernd nach einfachen Dingen fragt, anstatt mal eine Suchmaschine zu fragen oder die angebotenen Links durchzulesen, bekommt von mir keine Hilfe mehr. So wirst du als Entwickler auch nie vorankommen.

Dass du dann nicht mal einen [Hilfreich] oder [Danke] Knopf drückst, macht dich auch nicht sympathischer.

0

Du kannst die variablen als Binding in der Zielview anfordern:

Bsp:

struct testView: View{
  @Binding var testVar: Bool
  var body: some View{
      //Hier deine Ansicht
    }
}

In der View, die schon existiert, rufst du die View dann einfach so auf:

struct ContentView: View{
  @State var testVar: Bool = false
  var body: some View{
    testView(testVar: $testVar)
  }
}

Dies eignet sich aber nur, wenn dies 2 Views betrifft. Wenn du es in mehreren (mehr als 3 oder 4) Views machen willst, empfehle ich dir die Möglichkeit von Babelfish.

Woher ich das weiß:eigene Erfahrung