SwiftUI variable problem

Hallo, ich möchte just4fun WFC(Wave Function Collapse) in SwiftUI implementieren.Ich habe nur ein komisches Problem.Der Output von der Funktion collapseTile() ist immer false ): Hier ist mein Code:

struct tile: View {

    @State var MapSize: CGFloat

    @State var DIM: CGFloat

    @State var tiles = [0,1,2]

    @State public var collapse = false

    var body: some View {

        ZStack {

            RoundedRectangle(cornerRadius: 1.0)

                .frame(width: MapSize/DIM,height: MapSize/DIM)

                .foregroundStyle(collapse ? LinearGradient(Color.red,Color.green) : LinearGradient(Color.black,Color.gray))

                .aspectRatio(1.0,contentMode: ContentMode.fit)

            Text("\(String(collapse))")

                .font(.custom("ehhh", size: 5.0))

        }

    }

    

    func collapseTile() {

        collapse = true

        print("Toggle collaps: \(collapse)")

    }

}

Ich verstehe nicht wieso und freue mich über Rückmeldung wie man das fixt oder schlauer macht.

Außerdem wollte ich fragen ob jemand weiß wie man aus .json files in swift playground liest.Das wäre nicht essenziell aber doch gut.Sonst müsste ich ein paar Umwege nehmen…

Answered by Claude31 in 723015022

Die Ausgabe der Funktion CollapseTile() ist immer falsch).

Ich verstehe nicht.

  • Die Funktion ändert den Wert von Collapse nicht.
  • Und es wird nicht im Code verwendet!

Du solltest schreiben:

    var collapse = false

    func collapseTile() {

        collapse.toggle()
        print("Toggle collaps: \(collapse)")
    }

The output of the collapseTile() function is always false).

I don't understand.

  • The function does not change the value of collapse.
  • And it is not used in the code!

You should write:

    var collapse = false

    func collapseTile() {

        collapse.toggle()
        print("Toggle collaps: \(collapse)")
    }
Accepted Answer

Die Ausgabe der Funktion CollapseTile() ist immer falsch).

Ich verstehe nicht.

  • Die Funktion ändert den Wert von Collapse nicht.
  • Und es wird nicht im Code verwendet!

Du solltest schreiben:

    var collapse = false

    func collapseTile() {

        collapse.toggle()
        print("Toggle collaps: \(collapse)")
    }

The output of the collapseTile() function is always false).

I don't understand.

  • The function does not change the value of collapse.
  • And it is not used in the code!

You should write:

    var collapse = false

    func collapseTile() {

        collapse.toggle()
        print("Toggle collaps: \(collapse)")
    }

Entschuldigung, ich habe zu schnell getippt. Sie müssen tatsächlich "var collapse" als State var definieren.

SwiftUI variable problem
 
 
Q