当按下按钮时,您可以存储选择的值。
您可以根据选择的按钮设置样式。
以下代码应该可以满足您的要求。最后按下哪个按钮会被选中,只有选中的按钮会是蓝色的,因为样式是基于属性的。另一个按钮清除选择。
struct ContentView: View {
let buttons = ["A", "B", "C"]
@State public var buttonSelected: Int?
var body: some View {
VStack(spacing: 20) {
ForEach(0..<buttons.count) { button in
Button(action: {
self.buttonSelected = button
}) {
Text("Button \(self.buttons[button])")
.padding()
.foregroundColor(.white)
.background(self.buttonSelected == button ? Color.blue : Color.green)
.clipShape(Capsule())
}
}
Button(action: {
self.buttonSelected = nil
}) {
Text("Clear Selection")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)