SwiftUI 如何创建选择器 Picker 并从中读取值?

16 min read

1.首先创建一个选择器 Picker。可以使用枚举来定义选择器的选项,也可以使用数组来动态创建选项。下面是使用枚举来创建选择器的例子:

enum ColorOption: String, CaseIterable {
    case red
    case green
    case blue
}

struct ContentView: View {
    @State private var selectedColor = ColorOption.red
    
    var body: some View {
        Picker("Color", selection: $selectedColor) {
            ForEach(ColorOption.allCases, id: \.self) { option in
                Text(option.rawValue.capitalized).tag(option)
            }
        }
    }
}

2.在选择器中使用 @State 属性来保存用户所选的值。选择器的 selection 参数和 @State 属性绑定,当用户选择不同的选项时,@State 属性的值也会相应地更新。

@State private var selectedColor = ColorOption.red

Picker("Color", selection: $selectedColor) {
    // ...
}

3.在需要使用所选值的地方读取 @State 属性的值即可。

Text("Selected color is \(selectedColor.rawValue)")