Book Image

SwiftUI Cookbook - Second Edition

By : Giordano Scalzo, Edgar Nzokwe
Book Image

SwiftUI Cookbook - Second Edition

By: Giordano Scalzo, Edgar Nzokwe

Overview of this book

SwiftUI provides an innovative and simple way to build beautiful user interfaces (UIs) for all Apple platforms, from iOS and macOS through to watchOS and tvOS, using the Swift programming language. In this recipe-based cookbook, you’ll cover the foundations of SwiftUI as well as the new SwiftUI 3 features introduced in iOS 15 and explore a range of essential techniques and concepts that will help you through the development process. The cookbook begins by explaining how to use basic SwiftUI components. Once you’ve learned the core concepts of UI development, such as Views, Controls, Lists, and ScrollViews, using practical implementations in Swift, you'll advance to adding useful features to SwiftUI using drawings, built-in shapes, animations, and transitions. You’ll understand how to integrate SwiftUI with exciting new components in the Apple development ecosystem, such as Combine for managing events and Core Data for managing app data. Finally, you’ll write iOS, macOS, and watchOS apps by sharing the same SwiftUI codebase. By the end of this SwiftUI book, you'll have discovered a range of simple, direct solutions to common problems encountered when building SwiftUI apps.
Table of Contents (17 chapters)

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...