如何在 SwiftUI 中获取分段样式按钮

How do I get segment style button in SwiftUI

所以在 SwiftUI、macOS 中,我想要单独的按钮,它们可以像复选框一样打开和关闭,但看起来像按钮,它们相互关联,像位标志一样思考,所以我希望它们像你一样触摸使用 NSSegmentedControl,在我看来你想使用 ButtonToggle 和一些修饰符来对它们进行分组,但我找不到它,PickerStyle 似乎是唯一的单选选项,这很有意义,因为 SwiftUI 似乎更多地是关于描述功能,然后控制它的呈现方式。

更新更清楚

对于正则表达式选项,我可以用checkbox来做,但是看起来不太好,感觉应该有一个方法来改变checkbox的显示方式,在这个例子中我有第一个启用三个按钮。

这是一个简单的自定义解决方案:

struct Option: Hashable {
    let label: String
    var selected: Bool
}


struct ContentView: View {
    
    @State var options: [Option] = [
        Option(label: "Dot All", selected: false),
        Option(label: "Extended", selected: false),
        Option(label: "Ignore Case", selected: false),
        Option(label: "Multi-line", selected: false),
    ]
    
    var body: some View {
        OptionPicker(options: $options)
    }
}


struct OptionPicker: View {
    
    @Binding var options: [Option]
    
    var body: some View {
        HStack(spacing: 0) {
            ForEach(options.indices, id: \.self) { i in
                
                Text(options[i].label)
                    .padding(.horizontal, 4)
                    .padding(5)
                    .background(options[i].selected ? .blue : .gray)
                
                    .onTapGesture {
                        options[i].selected.toggle()
                    }
                
                if i < options.count-1 {
                Divider()
                }
            }
        }
        .foregroundColor(.white)
        .cornerRadius(10)
        .frame(height: 32)
    }
}