Using @Binding to pass a state variable to child Views
In the Using @State to drive a View's behavior recipe, 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 of the variable, and if the variable is mutated, 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 of the TodoList
app that we created in the Using @State to drive a View's behavior recipe, where we are going to add a child view that allows us to add 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 can use the same StaticTodoList
project you used previously.
If you...