One Logo Pool Ball
SwiftUI · IOS API REFERENCE

Stepper

struct · iOS 13.0+ · SDK 27.1

nonisolated struct Stepper<Label> where Label : View

A control that performs increment and decrement actions. Use a stepper control when you want the user to have granular control while incrementing or decrementing a value. For example, you can use a stepper to: * Change a value up or down by `1`. * Operate strictly over a prescribed range. * Step by specific amounts over a stepper's range of possible values. The example below uses an array that holds a number of ``Color`` values, a local state variable, `value`, to set the control's background color, and title label. When the user clicks or taps the stepper's increment or decrement buttons, SwiftUI executes the relevant closure that updates `value`, wrapping the `value` to prevent overflow. SwiftUI then re-renders the view, updating the text and background color to match the current index: struct StepperView: View { @State private var value = 0 let colors: [Color] = [.orange, .red, .gray, .blue, .green, .purple, .pink] func incrementStep() { value += 1 if value >= colors.count { value = 0 } } func decrementStep() { value -= 1 if value < 0 { value = colors.count - 1 } } var body: some View { Stepper { Text("Value: \(value) Color: \(colors[value].description)") } onIncrement: { incrementStep() } onDecrement: { decrementStep() } .padding(5) .background(colors[value]) } } ![A view displaying a stepper that uses a text view for stepper's title and that changes the background color of its view when incremented or decremented. The view selects the new background color from a predefined array of colors using the stepper's value as the index.](SwiftUI-Stepper-increment-decrement-closures.png) The following example shows a stepper that displays the effect of incrementing or decrementing a value with the step size of `step` with the bounds defined by `range`: struct StepperView: View { @State private var value = 0 let step = 5 let range = 1...50 var body: some View { Stepper( value: $value, in: range, step: step ) { Text("Current: \(value) in \(range.description) " + "stepping by \(step)") } .padding(10) } } ![A view displaying a stepper with a step size of five, and a prescribed range of 1 though 50.](SwiftUI-Stepper-value-step-range.png)

Members (0)

This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.

Skipped declarations

21 declarations were excluded from these bindings. Each reason comes from the generator or the iOS SDK compiler.

Stepper.init(label:onIncrement:onDecrement:onEditingChanged:)

callback cannot propagate synchronous failure

Stepper.body

This protocol needs associated types that cannot yet cross the bridge.

Stepper.init(value:step:label:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(value:in:step:label:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:in:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:in:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(_:value:in:step:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(value:step:format:label:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(value:in:step:format:label:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:in:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:in:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(_:value:in:step:format:onEditingChanged:)

This declaration needs Swift generic type arguments. (no canonical witness for F)

Stepper.init(onIncrement:onDecrement:onEditingChanged:label:)

callback cannot propagate synchronous failure

Stepper.init(value:step:onEditingChanged:label:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

Stepper.init(value:in:step:onEditingChanged:label:)

This declaration needs Swift generic type arguments. (no canonical witness for V)

All SwiftUI types →