Initialisierung von Umgebungsvariablen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Initialisierung von Umgebungsvariablen

    Hi zusammen,

    ich habe da Mal zwei Probleme ;)

    Erstens:
    ich habe in meiner App Variablen, welche ich in als @Published deklariert habe (damit stehen sie mir in allen Views zur Verfügung). Diese Deklaration habe ich im ContentView gemacht.

    Gibt es da einen besseren Weg? "Irgendwo" in AppDelegate oder SceneDelegate? So, dass diese Umgebungsvariablen nur ein einziges Mal beim Starten der App initialisiert werden?

    Zur Info: bei den Variablen handelt es sich um das Füllen eines Dictionary, welches beim Start die CoreData Informationen in ein Dictionary lädt, damit mir diese Informationen dann überall zur Verfügung stehen.

    Zweitens:
    beim Editieren eines TextField möchte ich gern beim Beenden der Eingabe eine Funktion starten. Kann mir da jemand einen Tipp geben?



    Vielen Dank vorab an alle die sich erbarmen mir einen Tipp zu geben :) :) :)

    Mit freundlichen Grüßen André
    :evil: ;( :( ... aller Anfang ist schwer ... ?( <X :evil:
  • Schau dir mal den Initializer vom Textfield an. Hier gibt's eine Closure onComit
    developer.apple.com/documentation/swiftui/textfield

    Für dein zweites Problem, suchst du eigentlich nach einen EnvironmentObject. Dies erstellt man in der SceneDelegate und gibt es dem RootObjekt mit. Es steht dann allen Views zur Verfügung. Hier ein Link zum HowTo hackingwithswift.com/quick-sta…-share-data-between-views

    Schöne Grüsse
    Wolf
  • Hi Wolf,

    und wieder ein Volltreffer von Dir. Das "Closure onCommit" hat es bei mir gebracht:


    Quellcode

    1. TextField("", text: Binding<String>(
    2. get: {self.settings.playersDictionary[id]![attributeName]!},
    3. set: {self.settings.playersDictionary[id]![attributeName]! = $0}
    4. ),
    5. onCommit: {
    6. setMinMaxValues()
    7. }
    Ich Danke Dir !!!!!!
    :evil: ;( :( ... aller Anfang ist schwer ... ?( <X :evil:
  • Hi Wolf,

    ich bin beim "onEditigChanged" geblieben und habe es so umgesetzt:

    Quellcode

    1. TextField("", text: $name3,
    2. onEditingChanged: { (changed) in
    3. // coming in textfield
    4. if changed {
    5. print("changed '\(changed)'")
    6. self.function4(string: self.name3)
    7. }
    8. // going out of textfield
    9. else {
    10. print("changed '\(changed)'")
    11. self.function5(string: self.name3)
    12. }
    13. })
    Alles anzeigen
    Und wieder einmal: recht herzlichen Dank :thumbsup:
    :evil: ;( :( ... aller Anfang ist schwer ... ?( <X :evil: