如何在SwiftUI中单击时更改按钮边框颜色

如何在SwiftUI中单击时更改按钮边框颜色,swiftui,Swiftui,我需要在一行中显示3个按钮,按钮的默认边框颜色(比如绿色)。根据三个按钮中的哪个按钮被点击,我需要改变它的边框颜色(变成红色)来突出显示那个按钮。SwiftUI不允许在操作处理程序中传递按钮对象(self)(如Swift中的“发件人”)。是否有办法根据选择的按钮切换所有三个按钮的边框 HStack { Button(action: { border(Color.red, width: 1) // This doesn't work } , label

我需要在一行中显示3个按钮,按钮的默认边框颜色(比如绿色)。根据三个按钮中的哪个按钮被点击,我需要改变它的边框颜色(变成红色)来突出显示那个按钮。SwiftUI不允许在操作处理程序中传递按钮对象(self)(如Swift中的“发件人”)。是否有办法根据选择的按钮切换所有三个按钮的边框

HStack {
    Button(action: {
        border(Color.red, width: 1)    // This doesn't work
    }
    , label: {
        Text("Option 1")
    }).border(Color.green, width: 1)

    Button(action: {
        border(Color.red, width: 1)    
    }
    , label: {
        Text("Option 2")
    }).border(Color.green, width: 1)

    Button(action: {
        border(Color.red, width: 1)    
    }
    , label: {
        Text("Option 3")
    }).border(Color.green, width: 1)

}

解决方案应如下所示:

@State var selectedButton: Int = 1

var body: some View {
    HStack {
        Button(action: {
            selectedButton = 1
        }
        , label: {
            Text("Option 2")
        })
        .border(selectedButton == 1 ? Color.red : Color.green, width: 1)

        Button(action: {
            selectedButton = 2
        }
        , label: {
            Text("Option 2")
        })
        .border(selectedButton == 2 ? Color.red : Color.green, width: 1)

        Button(action: {
            selectedButton = 3
        }
        , label: {
            Text("Option 3")
        })
        .border(selectedButton == 3 ? Color.red : Color.green, width: 1)

    }
}