Skip to content

[SwiftUI]Pickerで負の値を設定する方法

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)")
 }



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です