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