[英]How do I make another series of buttons appear in SwiftUI
我的代码目前要求用户在早上和晚上之间进行选择,根据他们的回答,它会提供另外两个选项。 但是,早/晚问题之后提供的选项不起作用。 我希望我的代码扩展测验,例如,在按 Evening,然后按 Savory 后,代码将显示选项 1 和选项 2。这是我当前的代码:
import SwiftUI
struct IfElseQuiz: View {
@State var isMorning = false
@State var isEvening = false
@State var isSnack = false
@State var isMeal = false
@State var isSavory = false
@State var isSweet = false
var body: some View {
VStack {
ZStack {
if !isMorning && !isEvening {
HStack {
Button {
isMorning.toggle()
} label: {
Text("Morning🌥")
}
Button {
isEvening.toggle()
} label: {
Text("Evening☀️")
}
}
}
else if isMorning {
HStack {
Button {
isSnack.toggle()
} label: {
Text("Snack🥄")
}
Button {
isMeal.toggle()
} label: {
Text("Meal🍽")
}
}
}
else if isEvening {
HStack {
Button {
isSweet.toggle()
} label: {
Text("Sweet🍦")
}
Button {
isSavory.toggle()
} label: {
Text("Savory🧂")
}
}
}
}
}
}
}
对于这种情况,我会在字符串/枚举变量的帮助下使用 switch/case 进行另一个链接。 我在您提供的代码中添加了一些新代码。
试试下面的代码:
import SwiftUI
struct IfElseQuiz: View {
@State var isMorning = false
@State var isEvening = false
@State var isSnack = false
@State var isMeal = false
@State var isSavory = false
@State var isSweet = false
//added
@State var result = ""
var body: some View {
VStack {
ZStack {
//added
if result != "" {
switch result {
case "MorningSnack":
HStack {
Button("Option 1: Apple") {
}
Button("Option 2: Orange") {
}
}
case "MorningMeal":
HStack {
Button("Option 1: Pancake") {
}
Button("Option 2: Bacon") {
}
}
case "EveningSweet":
HStack {
Button("Option 1: Ice cream") {
}
Button("Option 2: Tiramisu") {
}
}
case "EveningSavory":
HStack {
Button("Option 1: Steak") {
}
Button("Option 2: Pasta") {
}
}
default:
Text("").opacity(0)
}
}
else if !isMorning && !isEvening {
HStack {
Button {
isMorning.toggle()
} label: {
Text("Morning🌥")
}
Button {
isEvening.toggle()
} label: {
Text("Evening☀️")
}
}
}
else if isMorning {
HStack {
Button {
//added
result = "MorningSnack"
isMorning.toggle()
} label: {
Text("Snack🥄")
}
Button {
//added
result = "MorningMeal"
isMorning.toggle()
} label: {
Text("Meal🍽")
}
}
}
else if isEvening {
HStack {
Button {
//added
result = "EveningSweet"
isEvening.toggle()
} label: {
Text("Sweet🍦")
}
Button {
//added
result = "EveningSavory"
isEvening.toggle()
} label: {
Text("Savory🧂")
}
}
}
}
}
}
}
发帖人要求的附加答案。
import SwiftUI
struct Content: View {
@State var result = "Start"
var body: some View {
VStack {
ZStack {
switch result {
case "Start":
HStack {
Button {
result = "M"
} label: {
Text("Morning🌥")
}
Button {
result = "E"
} label: {
Text("Evening☀️")
}
}
case "E":
HStack {
Button {
result = "EveningSweet"
} label: {
Text("Sweet🍦")
}
Button {
result = "EveningSavory"
} label: {
Text("Savory🧂")
}
}
case "M":
HStack {
Button {
result = "MorningSnack"
} label: {
Text("Snack🥄")
}
Button {
result = "MorningMeal"
} label: {
Text("Meal🍽")
}
}
case "MorningSnack":
HStack {
Button("Option 1: Apple") {
result = "MSApple"
}
Button("Option 2: Orange") {
result = "MSOrange"
}
}
case "MorningMeal":
HStack {
Button("Option 1: Pancake") {
result = "MMPancake"
}
Button("Option 2: Bacon") {
result = "MMBacon"
}
}
case "EveningSweet":
HStack {
Button("Option 1: Ice cream") {
result = "ESWIcecream"
}
Button("Option 2: Tiramisu") {
result = "ESWTiramisu"
}
}
case "EveningSavory":
HStack {
Button("Option 1: Steak") {
result = "ESVSteak"
}
Button("Option 2: Pasta") {
result = "ESVPasta"
}
}
//here is extra chaning
case "ESVSteak":
HStack {
Button("Option 1: Medium Rare") {
}
Button("Option 2: Medium") {
}
}
case "ESVPasta":
HStack {
Button("Option 1: With Bacon") {
}
Button("Option 2: With Seafood") {
}
}
case "ESWIcecream":
HStack {
Button("Option 1: Strawberry") {
}
Button("Option 2: Chocolate") {
}
}
case "ESWTiramisu":
HStack {
Button("Option 1: Half") {
}
Button("Option 2: Full") {
}
}
case "MSApple":
HStack {
Button("Option 1: Green") {
}
Button("Option 2: Red") {
}
}
case "MSOrange":
HStack {
Button("Option 1: Big") {
}
Button("Option 2: Small") {
}
}
case "MMPancake":
HStack {
Button("Option 1: 2") {
}
Button("Option 2: 3") {
}
}
case "MMBacon":
HStack {
Button("Option 1: Crispy") {
}
Button("Option 2: Soft") {
}
}
default:
Text("").opacity(0)
}
}
Button("Restart Game") {
result = "Start"
}
.foregroundColor(.red)
.padding()
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.