注意点
Pickerの要素を動的に作りたい場合には、 ForEachが使えます。
struct ContentView: View {
@State var selected = 0
var body: some View {
VStack {
Picker(selection: $selected, label: Text("ピッカー")){
ForEach(0..<5) {index in
Text("\(index)")
}
}
Text("\(selected)")
}
}
}
PickerでForEachを使う場合は、Pickerの挙動が少し変わります。
普通のPickerでは、tagに設定した値が、selectionに渡されます。
ですが、ForEachの場合は、クロージャーの引数が自動的に渡されるようになっています。
ここで注意すべきなので、クロージャーの引数とselectionの値がマッチしている必要がある点です。
例えば、クロージャーの引数がインデックスなのに、selectionが文字列だと噛み合わなくなります。
なので、PickerのForEachでは、自動的に渡される値に気をつける必要があります。
まとめ
PickerでForEachを使う際は、ForEachのクロージャーの引数とPickerのselectionの値がマッチするようにしなければいけません。
クロージャーの引数とselectionの値が合わない時、予想外の挙動をする事になります。
参考 : 金田浩明「SwiftUI 徹底入門」
コメント