Book Image

An iOS Developer's Guide to SwiftUI

By : Michele Fadda
Book Image

An iOS Developer's Guide to SwiftUI

By: Michele Fadda

Overview of this book

– SwiftUI transforms Apple Platform app development with intuitive Swift code for seamless UI design. – Explore SwiftUI's declarative programming: define what the app should look like and do, while the OS handles the heavy lifting. – Hands-on approach covers SwiftUI fundamentals and often-omitted parts in introductory guides. – Progress from creating views and modifiers to intricate, responsive UIs and advanced techniques for complex apps. – Focus on new features in asynchronous programming and architecture patterns for efficient, modern app design. – Learn UIKit and SwiftUI integration, plus how to run tests for SwiftUI applications. – Gain confidence to harness SwiftUI's full potential for building professional-grade apps across Apple devices.
Table of Contents (25 chapters)
Free Chapter
1
Part 1: Simple Views
5
Part 2: Scrollable Views
8
Part 3: SwiftUI Navigation
11
Part 4: Graphics and Animation
14
Part 5: App Architecture
17
Part 6: Beyond Basics

Using NavigationPath to control the navigation stack

Separating NavigationLink from the destination simplifies creating deep links and also jumping to arbitrary destinations or pushing or popping several views at once.

With NavigationStack, you can attach multiple navigation destinations to handle different types of data. In this case, your destination should be expressed with NavigationPath, rather than an array of data of a specific type.

The following example does exactly that, using two instances of .navigationDestination: one to handle a destination view to handle an Int parameter, and the other to handle a String one. Notice that @State var presentedValues is initialized to NavigationPath(), and that value is bound to the initializer’s NavigationStack(path:) parameter.

Technically, NavigationPath is a type-erased list of data representing the content of a navigation stack, meaning that it can contain elements of different types.

NavigationPath as a type-erased...