SwiftUI - Portare variabile di tipo integer value di altre viste

0

Domanda

Ho fatto un piccolo quiz. Quando si preme un pulsante di un determinato importo viene aggiunto Xcode e Ycode. Ora voglio prendere il valore di Xcode e Ycode con me per la visualizzazione successiva. Così, quando si è in vista successiva è possibile rispondere a un'altra domanda e un importo aggiunto al di sopra della quantità esistente e quindi voglio prendere quel valore per ancora un altro punto di vista.

Quindi come potrei prendere il valore di Xcode e Ycode per la visualizzazione successiva? Questo è de il codice che ho fatto:

    @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

Migliore risposta

1

Ecco una breve esempio di come si potrebbe utilizzare @Vincolanti sul secondo schermo per aggiornare le quantità esistenti. Ma ti consiglierei di dare un'occhiata su documenti e capire quando usare @Stato, @Associazione, @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

Grazie mille per aver trovato il tempo per rispondere alla mia domanda. Sono stato a guardare più video e leggendo le associazioni e gli altri oggetti che hai citato. Ho accettato la risposta e con voto positivo di esso. Di nuovo, grazie :)
Curiousnoes

In altre lingue

Questa pagina è in altre lingue

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