@State private var selectedColor = 0
var body: some View {
VStack {
Picker(selection: $selectedColor, label: Text("Color")){
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}
}
.padding()
}
選択した色を表示する
L アイテムの並び順はtag()で指定する
struct ContentView: View {
@State private var selectedColor = 0
let colorViews:[Color] = [.red, .green, .blue]
let colorNames = ["Red", "Green", "Blue"]
var body: some View {
VStack {
Picker(selection: $selectedColor, label: Text("Color")){
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}
HStack {
colorViews[selectedColor]
.frame(width: 50, height:100)
Text("value: \(selectedColor)").frame(width:60)
Text("\(colorNames[selectedColor])").frame(width:70)
}
}
.padding()
}
}
segmented style
Picker(selection: $selectedColor, label: Text("Color")){
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}.pickerStyle(.segmented)

処理の分岐
VStack {
Picker(selection: $selectedColor, label: Text("Color")){
Text("Red").tag(0)
Text("Green").tag(1)
Text("Blue").tag(2)
}
.pickerStyle(.segmented)
.frame(width: 250, height: 30)
.padding()
let color = colorViews[selectedColor]
switch color {
case .red:
Rectangle()
.frame(width: 50, height: 50)
.foregroundColor(.red)
case .green:
Circle()
.frame(width: 50, height: 50)
.foregroundColor(.green)
case .blue:
Circle()
.stroke(lineWidth: 8)
.frame(width: 50, height: 50)
.foregroundColor(.blue)
default:
Text("default")
}
Switch文
func fortune(color: String){
switch color {
case "red", "yellow":
print("\(color)は、当たり")
case "green":
print("\(color)は、大当たり")
default:
print("\(color)は、ハズレ")
}
}
fortune(color: "yellow")
fortune(color: "blue")
fortune(color: "green")
fortune(color: "red")
segmented pickerはカッコいいですね^^