One navigator to rule them all
summary
Claim: navigation belongs outside view controllers as standalone navigator objects. Implements a Star Wars sample app, replacing per-controller delegates with navigator protocols grouped by destination (movie, character, starship), a single app navigator plus optional sub-navigator flows, and a separate model context for mutations. Result: fewer duplicates, no viewDidLoad coupling, easier reuse on iPad/TV and safer rewrites. Worked in a startup but required careful sub-navigator lifecycle and deep linking was handled awkwardly rather than elegantly.
AI-written summary · about
chapters (33)
- 0:00Intro
- 1:45Navigation Flow
- 2:07ViewControllerA
- 3:03Philosophical Issues
- 5:09View Controller A
- 6:34Problems
- 8:14The mess
- 8:28Delegate
- 9:06Sample App
- 9:59Navigation Delegate
- 10:26View Controller Delegate
- 12:03What did we fix
- 12:56Issues
- 14:28Movie Details
- 14:56Code duplication
- 15:19Delegate methods
- 16:21Delegate declarations
- 16:58Navigator
- 17:16What is a Navigator
- 17:41Navigator Protocols
- 17:52Functional Navigators
- 18:43Navigators
- 19:28Error Navigator
- 20:03App Navigator
- 22:37Why does this matter
- 23:35Subnavigator
- 24:18Image navigation
- 24:43Sub navigator
- 25:36Sub navigator vs Coordinator pattern
- 26:55Quick summary
- 27:32Thank you
- 28:06Summer
- 29:09Mutations
related talks
45mDynamic navigation in modularised iOS apps
32mSwiftUI Navigation Demystified
47mApplicationCoordinator for Navigation Between Screens
37mHands on with Coordinators
42mBuilding with the Navigation SDK on iOS
23mWriting Your UI Swiftly
44mNavigation in SwiftUI
44mSeparation of concerns: Refactoring view controllers live
