我做了一個小測驗。當您按下按鈕時,特定數量會添加到 Xcode 和 Ycode。現在我想把 Xcode 和 Ycode 的值帶到下一個視圖。因此,當您在下一個視圖中時,您可以回答另一個問題,并在現有金額之上添加一個金額,然后我想將該值帶到另一個視圖中。
那么如何將 Xcode 和 Ycode 的值帶到下一個視圖中呢?這是我制作的代碼:
@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()
}
}
}
}
}
uj5u.com熱心網友回復:
這是一個快速且有效的示例,說明如何在第二個螢屏上使用 @Binding 來更新現有金額。但我建議您查看檔案并了解何時使用 @State、@Binding、@ObservedObject、@StateObject 等。
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
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/363656.html
