如何将 if else 语句添加到按钮和 .sheet?

Posted

技术标签:

【中文标题】如何将 if else 语句添加到按钮和 .sheet?【英文标题】:How to add if else statement to a button and .sheet? 【发布时间】:2021-07-17 05:33:26 【问题描述】:

我是 SwiftUI 的新手,正在尝试创建一个简单的应用程序,该应用程序每次启动时都会生成一个随机按钮。随机按钮生成一个链接到该随机按钮的新视图。目前,它链接到一个视图,每次按下按钮时都会显示该视图。 这是我的代码:

struct ContentView: View 
@State private var armview: Bool = false
let workouts = ["Arms", "Legs", "Back", "Core"]

var body: some View 
    VStack 
        VStack 
            Text("Random workout for the day:")
                .bold()
                .font(.title)
        
        Button(workoutGen()) 
            self.armview = true
        
        .font(.title2)
        .sheet(isPresented: $armview, content: 
            ArmExerciseView()
        )
    


func workoutGen() -> String 
    let workout = workouts.randomElement()
    return workout ?? "nil"

我正在尝试找出如何附加 if-else 条件或开关盒,以便我可以根据出现和被点击的按钮呈现不同的视图。 所以对腿部、背部、核心等有不同的看法。

【问题讨论】:

在 Switch Case 中使用多个 SwiftUI 表格。有条件地实现 OnTap 以显示工作表。 这能回答你的问题吗? SwiftUI: show different sheet items conditionally 【参考方案1】:

试试这样的:

import SwiftUI

@main
struct TestApp: App 
    var body: some Scene 
        WindowGroup 
            ContentView()
        
    


struct ContentView: View 
    @State private var armview: Bool = false
    let workouts = ["Arms", "Legs", "Back", "Core"]
    @State private var workoutSelection = "workout selection"
    
    var body: some View 
        VStack 
            VStack 
                Text("Random workout for the day:").bold().font(.title)
            
            Button(workoutSelection) 
                armview = true
            
            .font(.title2)
            .sheet(isPresented: $armview, onDismiss: workoutGen()) 
                switch workoutSelection 
                case "Arms": Text("Arms") // ArmExerciseView()
                case "Legs": Text("Legs")
                case "Back": Text("Back")
                case "Core": Text("Core")
                default:
                    Text("no selection")
                
            
        .onAppear 
            workoutGen()
        
    
    
    func workoutGen() 
        workoutSelection = workouts.randomElement() ?? "workout selection"
    
    

【讨论】:

以上是关于如何将 if else 语句添加到按钮和 .sheet?的主要内容,如果未能解决你的问题,请参考以下文章

按钮、序列和 If/Else 语句

如何将覆盖函数插入到 if else 语句中

将 lapply 与 for 和 if..else 语句结合使用,将条件列添加到多个数据帧

如何使用 if-else 语句检查按钮点击历史? C#

将 if 语句添加到网页上的按钮

Flutter-如何根据if和else语句的值在点击时切换RaisedButton的颜色