Button 迅捷。如何在单击后永久更改按钮的颜色?

Button 迅捷。如何在单击后永久更改按钮的颜色?,button,colors,swiftui,Button,Colors,Swiftui,我正在构建一个测验应用程序。一个问题;3个答案。答案在单独的按钮中 我设法在单击时更改按钮的颜色。如从灰色到绿色/红色。但点击后,按钮变回灰色 有没有一种方法可以像HTML中的超链接一样,在单击后保留更改的颜色 这是样式代码: struct MyButtonStyle: ButtonStyle { func makeBody(configuration: Self.Configuration) -> some View { configuration.label

我正在构建一个测验应用程序。一个问题;3个答案。答案在单独的按钮中

我设法在单击时更改按钮的颜色。如从灰色到绿色/红色。但点击后,按钮变回灰色

有没有一种方法可以像HTML中的超链接一样,在单击后保留更改的颜色

这是样式代码:

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()