繁体   English   中英

如何在 SwiftUI 中显示另一系列按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM