init(_:value:in:step:onEditingChanged:)
Creates a stepper instance that increments and decrements a binding to a value, by a step size and within a closed range that you provide.
Declaration
@export(implementation) nonisolated init<V>(_ titleResource: LocalizedStringResource, value: Binding<V>, in bounds: ClosedRange<V>, step: V.Stride = 1, onEditingChanged: @escaping (Bool) -> Void = { _ in }) where V : StrideableParameters
- titleResource:
Text resource for the stepper’s localized title describing the purpose of the stepper.
- value:
A Binding to a value that your provide.
- bounds:
A closed range that describes the upper and lower bounds permitted by the stepper.
- step:
The amount to increment or decrement
valueeach time the user clicks or taps the stepper’s increment or decrement button, respectively. Defaults to1. - onEditingChanged:
A closure that’s called when editing begins and ends. For example, on iOS, the user may touch and hold the increment or decrement buttons on a
Stepperwhich causes the execution of theonEditingChangedclosure at the start and end of the gesture.
Discussion
Use Stepper(_:value:in:step:onEditingChanged:) to create a stepper that increments or decrements a value within a specific range of values by a specific step size. In the example below, a stepper increments or decrements a binding to value over a range of 1...50 by 5 at each press of the stepper’s increment or decrement buttons:
struct StepperView: View {
@State private var value = 0
@State private var titleKey = "Stepper"
let step = 5
let range = 1...50
var body: some View {
VStack(spacing: 20) {
Text("Current Stepper Value: \(value)")
Stepper(titleKey, value: $value, in: range, step: step)
}
}
}[Image]