今回は UIStepper の SwiftUI版、Stepper についてのサンプルを紹介します。
SwiftUIのStepper(UIStepper)を使い方
Stepper は何かの個数を選択する場合などに使用しますが、+ or – のボタンで1つずつカウントするものなので、通常は選択する値の範囲が狭い場合に使用することを推奨します。そのため、100個、200個ほど選択幅がある場合は Picker を利用するか、TextField で入力してもらう方がユーザビリティ的に良いかと思います。
まずは、イニシャライザーの定義です。いくつかありますが、以下のイニシャライザーが大体の用途に利用できるかと思います。
Stepper(value: Binding<Strideable>, in: ClosedRange<Strideable>, step: Comparable & SignedNumeric, onEditingChanged: (Bool) -> Void, label: () -> _)
value: Binding<Strideable> には状態変数(@State)を指定します。
@State private var stepCount = 0
・・・
Stepper(value: $stepCount, ...
in: CloseRange<Strideable> には設定する値の範囲を指定します。
Stepper(..., in: 0...10, ...
step: Comparable & SignedNumeric には値の増減値を指定します。
Stepper(..., step: 5, ...
onEditingChanged: (Bool) -> Void は、値の増減時に何か処理を行いたい場合のクロージャメソッドを指定します。必要に応じてエラー処理などを記述すると良いかと思います。
Stepper(..., onEditingChanged { _ in
エラー処理など
}
label: () -> _ はラベルを指定します。
Stepper(...) {
Text("個数を指定してください:\($stepCount)個")
}
最後に、冒頭サンプルのソースコード全体を紹介します。
身長を入力するサンプルで、入力範囲を 140.0〜200.0、増減値を 0.5 としています。
struct ContentView: View {
@State private var height = 170.0
var body: some View {
Form {
Stepper(value: $height, in: 140.0...200.00, step: 0.5, onEditingChanged: {_ in
必要に応じて何か処理
}, label: {
Text("身長:" + (floor(self.height * 10) / 10).description + "cm")
})
}
}
}
以上
コメントを残す