SwiftUI de Trazer a variável valor inteiro para outros pontos de vista

0

Pergunta

Fiz um pequeno teste. Quando você pressiona um botão de uma quantidade específica é adicionado ao Xcode e Ycode. Agora eu quero tirar o valor do Xcode e Ycode comigo para a próxima exibição. Então, quando você estiver na exibição seguinte você pode responder a outra pergunta e uma quantidade é adicionada na parte superior da existente montante e, em seguida, eu quero tirar esse valor ainda para outro modo de exibição.

Então, como posso pegar o valor do Xcode e Ycode para a próxima exibição? Este é de código que eu fiz:

    @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

Melhor resposta

1

Aqui está uma rápida e de trabalho exemplo de como você pode usar @Vinculação na segunda tela para atualizar o existente montante. Mas eu recomendo que você dê uma olhada no google docs e entender quando usar @Estado, @Vinculação, @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

Muito obrigado por tomar o tempo para responder a minha pergunta. Estive a ver vários vídeos e ler sobre as ligações e os outros objetos que você mencionou. Eu aceito você de resposta e votos positivos-lo. Novamente, obrigado :)
Curiousnoes

Em outros idiomas

Esta página está em outros idiomas

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