SwiftUI 中每次点击按钮时的不同操作

Different Action On Every Tap of Button in SwiftUI

我正在使用按钮 show/hide SwiftUI 中的视图。当我第一次 点击 按钮时它工作正常。像这样:

我想要的是当我第一次点击它时,它必须显示我的视图。当我点击时,它必须再次隐藏视图。在 每次点击 时,它必须分别 show/hide 视图。在 Storyboard 中,这个 scenario 很容易处理,但在 SwiftUI 中,我不知道如何操作,因为我是 SwiftUI 的新手。

我的代码是:


import SwiftUI

struct ShowHideText: View {
    
    @State private var showName = false
    
    var body: some View {
        VStack(spacing: 50) {
            
            Text("Users")
                .fontWeight(.bold)
            
            if showName {
                name()
            } else {
                name()
                    .hidden()
            }
            
            
            Button("Show/Hide") {
                showName = true
            }
        }
    }
    
    func name() -> some View {
        
        VStack(spacing: 30) {
            Text("David")
            
            Text("Kate")
        }
        
    }
}

struct ShowHideText_Previews: PreviewProvider {
    static var previews: some View {
        ShowHideText()
    }
}

还有一件事我需要问的是在我的代码中,如果我使用 .hidden(),视图 hides但视图的 space 仍然存在。我不知道是否有隐藏视图的方法,我也有视图的内容,因为我也必须对其内容做一些工作,或者如果我 不[,它是否工作正常=37=] 在 else 部分使用 .hidden()name() 我可以做到一些使用其内容。

改变

Button("Show/Hide") {
   showName = true
}    

Button("Show/Hide") {
   showName.toggle()
}

关于你问题的第二部分。变化

if showName {
    name()
} else {
    name()
        .hidden()
}

if showName {
    name()
}