Using @Binding to pass a state variable to child Views
In the previous recipe, Using @State to drive Views behavior, you saw how to use an @State
variable to change a UI. But what if we want to have another view that changes that @State
variable?
Given that an array has a value-type semantic, if we pass down the variable, Swift creates a copy whose changes are not reflected in the original.
SwiftUI solves this with the @Binding
property wrapper, which, in a certain way, creates a reference semantic for specific structs.
To explore this mechanism, we are going to create an extension to the TodoApp
we created in the previous recipe, Using @State to drive Views behavior, where we are going to add a child view that allows the addition of a new to-do to the list.
Getting ready
The starting point for this project is the final code of the previous recipe, so you could use the same StaticTodoApp
project.
If you want to keep the recipes separate, you can create a new SwiftUI...