Using @State to drive a View's behavior
As we mentioned in the introduction, when a state variable belongs only to a single view, its changes are bound to the components using the @State
property wrapper.
To understand this behavior, we are going to implement a simple to-do list app, where a static set of to-dos are changed to done when we tap on the row.
In the next recipe, Using @Binding to pass a state variable to child Views, we'll expand on this recipe, adding the possibility of adding new to-dos.
Getting ready
Let's start this recipe by creating a SwiftUI app called StaticTodoList
.
How to do it…
To demonstrate the use of the @State
variable, we are going to create an app that holds its state in a list of Todo
structs: each Todo
can be either undone or done, and we can change its state by tapping on the related row.
When the user taps on one row in the UI, they change the done state in the related Todo
struct:
- Let's start...