簡體   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