SwiftUIのPickerで負の値を選択できるようにする方法です。
例えば単純にこのようなプログラムを書いた場合、Pickerに表示される数字は-100から100が設定されますが、肝心の変数(pickedX)にはインデックスとして0から200の数字が順に割り振られてしまいます。
import SwiftUI
struct xdouble: View {
@State private var pickedX:Int = 0
var body: some View {
GeometryReader{ geometry in
VStack{
Text("X")
Picker(selection: self.$pickedX, label: Text("x")){
ForEach(-100..<100){ _x in
Text("\(_x)")
}
}
.frame(maxWidth: geometry.size.width / 2)
.clipped()
Text("\(self.pickedX)") //debug view
}
}
}
}
struct xdouble_Previews: PreviewProvider {
static var previews: some View {
xdouble(x: .constant(0))
}
}
このような場合、ForEachのプロパティにidを設定することで、これらの値を一致させることができます。
ForEach(-100..<100, id:\.self){ _x in
Text("\(_x)")
}
