Button 迅捷。如何在单击后永久更改按钮的颜色?
我正在构建一个测验应用程序。一个问题;3个答案。答案在单独的按钮中 我设法在单击时更改按钮的颜色。如从灰色到绿色/红色。但点击后,按钮变回灰色 有没有一种方法可以像HTML中的超链接一样,在单击后保留更改的颜色 这是样式代码:Button 迅捷。如何在单击后永久更改按钮的颜色?,button,colors,swiftui,Button,Colors,Swiftui,我正在构建一个测验应用程序。一个问题;3个答案。答案在单独的按钮中 我设法在单击时更改按钮的颜色。如从灰色到绿色/红色。但点击后,按钮变回灰色 有没有一种方法可以像HTML中的超链接一样,在单击后保留更改的颜色 这是样式代码: struct MyButtonStyle: ButtonStyle { func makeBody(configuration: Self.Configuration) -> some View { configuration.label
struct MyButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.padding(20)
.foregroundColor(.white)
.background(configuration.isPressed ? Color.red : Color.gray)
.cornerRadius(10.0)
尝试这样的操作,一旦
被按下
变为真
它就不会再变为假,因此按钮将保持灰色
struct ContentView: View {
@State private var isPressed = false
var body: some View {
Button(action: {
self.isPressed = true
}, label: {
Text("Button").accentColor(isPressed ? Color.gray : Color.blue)
})
}
}
您可以这样声明您的按钮样式:
public struct SelectedButtonStyle: ButtonStyle {
@Binding var isSelected: Bool
public func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.padding(20)
.foregroundColor(.white)
.background(isSelected ? Color.red : Color.gray)
.cornerRadius(10.0)
}
}
然后在视图中,有一个用于选择的状态:
@State var isSelected = false
然后,您可以像这样声明按钮,将其选中一次并永远保持选中状态:
Button("Tap") {
self.isSelected = true
} .buttonStyle(SelectedButtonStyle(isSelected: $isSelected))
或者,您也可以这样声明它,以便能够取消选择它:
Button("Tap") {
self.isSelected.toggle()
} .buttonStyle(SelectedButtonStyle(isSelected: $isSelected))
我试过了,但点击后颜色又变了回来。谢谢你的努力。@IrfanKaya你试过这个代码吗<再次单击按钮时,“代码>已显示”不会变为“假”,因此颜色不会改变我不知道为什么,但我无法使其工作。我对这方面很陌生,所以可能有其他代码可以这样做。使用
self.isPressed.toggle()