繁体   English   中英

如何在 SwiftUI 中隐藏单击按钮

[英]How to hide Button on Click in SwiftUI

我想在单击一个按钮后隐藏它并显示另一个按钮,反之亦然。

默认情况下,锁定按钮应该是第一个显示的按钮。 点击它后,只有第二个解锁按钮应该显示在同一个 position 中。

                  Button { //lock button
                    app.statusBar?.stop()
                   
                } label: {
                    Image(systemName: "lock")
                }
                                  
                    Button { //unlock button
                        app.statusBar?.start()
                       
                    } label: {
                        Image(systemName: "lock.open")
                    }
                }

这是针对 macOS 应用程序的。

为什么不只是一个按钮?

@State private var isLocked = false

...
    
    Button { //lock button
        isLocked.toggle()
        if isLocked {
            app.statusBar?.stop()
        } else {
            app.statusBar?.start()
        }
    } label: {
        Image(systemName: isLocked ? "lock" :  "lock.open")
    }

如果你真的想要两个按钮,你可以用opacity修改器隐藏一个

Button {

  ... 

}
.opacity(isLocked ? 1.0 : 0.0)

您需要通过@State变量设置条件。 当变量在真到假之间切换时,将相应地显示正确的按钮。

这是一个例子:

struct Example: View {
    @State private var free = true

    var body: some View {

            if free {

                Button { //lock button
                    app.statusBar?.stop()
                    free = false                   
                } label: {
                    Image(systemName: "lock")
                }

            } else {
                                  
                 Button { //unlock button
                        app.statusBar?.start()
                        free = true
                 } label: {
                        Image(systemName: "lock.open")
                 }
            }

    }
}

你可以使用 .hidden() 修饰符

Button {

  ... 

}
.hidden()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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