SwiftUI - Přinést proměnná celočíselná hodnota na jiné názory

0

Otázka

Udělal jsem malý kvíz. Když stisknete tlačítko, konkrétní částka je přidán do Xcode a Ycode. Teď chci, aby se hodnota Xcode a Ycode se mnou na další zobrazení. Takže, když jste v další zobrazení můžete odpovědět na další otázku, a částka je přidán na horní části stávající výši a pak chci, aby se tato hodnota ještě další pohled.

Tak jak jsem mohl mít hodnotu Xcode a Ycode na další výhled? To je de kódu jsem udělal:

    @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

Nejlepší odpověď

1

Zde je rychlý a pracuje příklad toho, jak můžete použít @Vazba na druhé obrazovce aktualizovat stávající výši. Ale doporučil bych vám podívat se na dokumenty a pochopit, kdy použít @Státu, @Závazné, @ObservedObject, @StateObject, atd.

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

Děkuji moc za čas, aby odpověď na mou otázku. Sledoval jsem několik videí a čtení o vázání a jiné objekty, které jste zmínil. Přijal jsem vám odpověď a upvoted. Znovu, děkuji :)
Curiousnoes

V jiných jazycích

Tato stránka je v jiných jazycích

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