init(_:value:in:step:format: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, displaying its value with an applied format style.
Declaration
nonisolated init<F>(_ titleKey: LocalizedStringKey, value: Binding<F.FormatInput>, in bounds: ClosedRange<F.FormatInput>, step: F.FormatInput.Stride = 1, format: F, onEditingChanged: @escaping (Bool) -> Void = { _ in }) where F : ParseableFormatStyle, F.FormatInput : BinaryFloatingPoint, F.FormatOutput == StringParameters
- titleKey:
The key 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. - format:
A format style of type
Fto use when converting between the string the user edits and the underlying value of typeF.FormatInput. Ifformatcan’t perform the conversion, the stepper leavesvalueunchanged. If the user stops editing the text in an invalid state, the stepper updates the text to the last known valid value. - 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:format:onEditingChanged:) to create a stepper that increments or decrements a value within a specific range of values by a specific step size, while displaying the current value. In the example below, a stepper increments or decrements a binding to value over a range of 1...50 by 5 each time the user clicks or taps the stepper’s increment or decrement buttons:
struct StepperView: View {
@State private var value = 0
private let step = 5.0
private let range = 1.0...50.0
var body: some View {
Stepper("Stepping by \(step) in \(range.description)",
value: $value,
in: range,
step: step,
format: .number
)
.padding()
}
}