如何在 SwiftUI 中单击时隐藏按钮
How to hide Button on Click in SwiftUI
我想在单击一个按钮后隐藏它并显示另一个按钮,反之亦然。
默认情况下,锁定按钮应该是第一个显示的按钮。点击后,只有第二个解锁按钮显示在相同位置。
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
变量设置条件。当变量在 true 和 false 之间切换时,相应的 Button 将相应显示。
这是一个例子:
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")
}
}
}
}
我想在单击一个按钮后隐藏它并显示另一个按钮,反之亦然。
默认情况下,锁定按钮应该是第一个显示的按钮。点击后,只有第二个解锁按钮显示在相同位置。
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
变量设置条件。当变量在 true 和 false 之间切换时,相应的 Button 将相应显示。
这是一个例子:
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")
}
}
}
}