如何仅实现一种与SwiftUI中的radiogroup类似的选择

如何使用SwiftUI中的视图列表仅实现与一组单选按钮相似的单个选择?

sample ss

评论
  • 占领网吧
    占领网吧 回复

    按下按钮时,可以存储为其选择的值。

    您可以根据选择的样式来设置按钮的样式。

    以下代码可以满足您的需求。上一次按下哪个按钮都将被选中,并且只有选定的按钮才会是蓝色,因为样式是基于属性的。然后另一个按钮清除选择。

    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")
                        .foregroundColor(.blue)
                }
            }
        }
    }
    

    enter image description here