SwiftUI - Aduce variabilă integer valoare alte opinii

0

Problema

Am făcut un mic test. Atunci când apăsați un buton, o anumită sumă se adaugă la Xcode și Ycode. Acum vreau sa iau valoare de Xcode și Ycode cu mine la ecranul următor. Deci, atunci când vă aflați în ecranul următor, puteți răspunde la o altă întrebare și o sumă care se adaugă la partea de sus a sumei existente și apoi vreau să merg în valoare de încă un alt punct de vedere.

Deci, cum as putea lua valoarea de Xcode și Ycode la urmatorul punct de vedere? Acest lucru este de cod am făcut:

    @State var ShowButton: Bool = false
    @State var ButtonYes: Bool = false
    @State var ButtonNo: Bool = false
    @State var ButtonSometimes: Bool = false
    @State var Xcode = 0
    @State var Ycode = 0

        
var body: some View {
    
        ZStack{
        Image("Chimps")
            .resizable()
            .ignoresSafeArea()
            .navigationBarHidden(true)
            
            VStack{
                Text("Question 1")
                    .font(.largeTitle)
                    .fontWeight(.heavy)
                    .padding()
                    .foregroundColor(.white)
                    .background(Color(red: 0.493, green: 0.184, blue: 0.487))
                    .cornerRadius(20)
                    
                Spacer()
                Text(String(Xcode))
                Text(String(Ycode))
                Text("Question 1")
                    .foregroundColor(Color.white)
                    .font(.headline)
                    .padding()
                    .background(Color(red: 0.493, green: 0.184, blue: 0.487))
                    .cornerRadius(20)
                Spacer()
                Spacer()
                
                HStack(spacing:10) {
                    
                    
                Button("Yes") {
                    ShowButton = true
                    ButtonYes.toggle()
                    if ButtonYes == true {
                    Xcode += 5
                        }
                    if ButtonYes == true {
                    Ycode += 5
                        }
                    if ButtonYes == false {
                        Xcode -= 5
                        }
                    if ButtonYes == false {
                        Ycode -= 5
                        }
                    if ButtonNo == true {
                        Xcode -= 3
                    }
                    if ButtonNo == true {
                        Ycode -= 3
                    }
                    if ButtonSometimes == true {
                        Xcode -= 1
                        }
                    if ButtonSometimes == true {
                        Ycode -= 1
                        }
                    if ButtonYes == true {
                        ButtonNo = false
                    }
                    if ButtonYes == true {
                        ButtonSometimes = false
                    }
                }
                .frame(width: 50, height: 50, alignment: .center)
                .foregroundColor(.white)
                .padding()
                .background(ButtonYes ? Color(red: 0.272, green: 0.471, blue: 0.262) : Color(red: 0.493, green: 0.184, blue: 0.487))
                .cornerRadius(20)
                .shadow(color: .black, radius: 10, x: 10, y: 10)
                   
                    Button("No") {
                        ShowButton = true
                        ButtonNo.toggle()
                        if ButtonNo == true {
                        Xcode += 3
                            }
                        if ButtonNo == true {
                        Ycode += 3
                            }
                        if ButtonNo == false {
                            Xcode -= 3
                            }
                        if ButtonNo == false {
                            Ycode -= 3
                            }
                        if ButtonYes == true {
                            Xcode -= 5
                        }
                        if ButtonYes == true {
                            Ycode -= 5
                        }
                        if ButtonSometimes == true {
                            Xcode -= 1
                            }
                        if ButtonSometimes == true {
                            Ycode -= 1
                            }
                        if ButtonNo == true {
                            ButtonYes = false
                        }
                        if ButtonNo == true {
                            ButtonSometimes = false
                        }
                        
                    }
                    .frame(width: 50, height: 50, alignment: .center)
                    .foregroundColor(.white)
                    .padding()
                    .background(ButtonNo ? Color(red: 0.272, green: 0.471, blue: 0.262) : Color(red: 0.493, green: 0.184, blue: 0.487))
                    .cornerRadius(20)
                    .shadow(color: .black, radius: 10, x: 10, y: 10)
                    
                    Button("Sometimes") {
                        ShowButton = true
                        ButtonSometimes.toggle()
                        if ButtonSometimes == true {
                        Xcode += 1
                            }
                        if ButtonSometimes == true {
                        Ycode += 1
                            }
                        if ButtonSometimes == false {
                            Xcode -= 1
                            }
                        if ButtonSometimes == false {
                            Ycode -= 1
                            }
                        if ButtonYes == true {
                            Xcode -= 5
                        }
                        if ButtonYes == true {
                            Ycode -= 5
                        }
                        if ButtonNo == true {
                            Xcode -= 3
                            }
                        if ButtonNo == true {
                            Ycode -= 3
                            }
                        if ButtonSometimes == true {
                            ButtonYes = false
                        }
                        if ButtonSometimes == true {
                            ButtonNo = false
                        }
                      
                        
                    }
                    .frame(width: 50, height: 50, alignment: .center)
                    .foregroundColor(.white)
                    .padding()
                    .background(ButtonSometimes ? Color(red: 0.272, green: 0.471, blue: 0.262) : Color(red: 0.493, green: 0.184, blue: 0.487))
                    .cornerRadius(20)
                    .shadow(color: .black, radius: 10, x: 10, y: 10)
                }
                
                Spacer()
                if ShowButton {
                NavigationLink(
                    destination: Question2(),
                
                    label: {
                Rectangle()
                            .fill(Color(red: 0.493, green: 0.184, blue: 0.487))
                    .frame(width: 150, height: 80, alignment: .bottom)
                    .cornerRadius(20)
                    .padding(10)
                    .shadow(color: .black, radius: 10, x: 10, y: 10)
                        
                    .overlay(
                        Text("Question 2")
                            .font(.largeTitle)
                            .foregroundColor(.white)
                            .shadow(color: .black, radius: 10, x: 10, y: 10)
                    )}
                
            )
                Spacer()
            }
    }
        
    
}
           
}
}

integer swift swiftui view
2021-11-22 14:35:46
1

Cel mai bun răspuns

1

Aici este un mod rapid și de lucru exemplu de cum ai putea folosi @Obligatorii pe al doilea ecran pentru a actualiza cantitatea existentă. Dar ți-aș recomanda să ia o privire la documente și de a înțelege când să folosească @de Stat, @Obligatorii, @ObservedObject, @StateObject, etc.

import SwiftUI

struct FirstView: View {
    
    @State var xValue = 0
    @State var yValue = 0
           
    var body: some View {
        NavigationView {
            VStack {
                Text("\(xValue)")
                Text("\(yValue)")
                Button("add to x") {
                    xValue += 1
                }
                Button("add to y") {
                    yValue += 1
                }
                Divider()
                NavigationLink("next screen", destination: SecondView(xValue: $xValue, yValue: $yValue))
            }
        }
    }

}

struct SecondView: View {
    
    @Binding var xValue: Int
    @Binding var yValue: Int
    
    var body: some View {
        NavigationView {
            VStack {
                Text("\(xValue)")
                Text("\(yValue)")
                Button("add to x") {
                    xValue += 1
                }
                Button("add to y") {
                    yValue += 1
                }
            }
        }
    }
}
2021-11-22 18:48:25

Vă mulțumesc foarte mult pentru a lua timp pentru a răspunde la întrebarea mea. Am urmarit mai multe clipuri video și citit despre legăturile și alte obiecte care le-ați menționat. Eu te-am acceptat răspunsul și upvoted ea. Din nou, vă mulțumesc :)
Curiousnoes

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................