SwiftUI 的 Picker 如何创建分段控件并从中读取值?

13 min read

以下是如何创建分段控件并从中读取值的示例:

struct ContentView: View {
    var colors = ["Red", "Green", "Blue"]
    @State private var selectedColorIndex = 0
    
    var body: some View {
        VStack {
            Picker(selection: $selectedColorIndex, label: Text("Color")) {
                ForEach(0 ..< colors.count) {
                    Text(self.colors[$0]).tag($0)
                }
            }.pickerStyle(SegmentedPickerStyle())
            Text("Selected color: \(colors[selectedColorIndex])")
        }
    }
}

在这个例子中,我们首先定义了一个包含颜色名称的数组,并声明了一个@State变量来存储用户选择的颜色索引。

接下来,在body属性中,我们创建了一个Picker控件,并将其绑定到selectedColorIndex变量,以便在用户选择变化时更新它。我们还设置了一个标签,用于在控件上方显示。

最后,我们使用pickerStyle函数将控件样式设置为“分段控件(Segmented Picker)”。

要获取所选颜色的实际名称,我们可以使用colors[selectedColorIndex],并在视图中显示它。