Quiz
1. What replaced NavigationView in iOS 16 for push/pop navigation?
2. How do you programmatically push a view onto a NavigationStack?
3. Which modifier defines which views correspond to which navigation values?
4. What protocol does NavigationPath conform to for saving/restoring state?
Flashcards
Question
What is NavigationPath?
Click to reveal answer
Answer
An observable collection representing the navigation state of a NavigationStack. It holds hashable values that map to views.
Question
How do you pop a view programmatically?
Click to reveal answer
Answer
Use path.removeLast() to pop one view, or path.removeLast(path.count) to pop to root.
Question
What is the difference between NavigationStack and NavigationSplitView?
Click to reveal answer
Answer
NavigationStack is for push/pop hierarchies (iPhone), NavigationSplitView is for column-based layouts (iPad).
Question
How do you dismiss a view inside a NavigationStack?
Click to reveal answer
Answer
Use @Environment(\.dismiss) and call dismiss() to pop the current view.
Revision Notes
Key Takeaways
- 1. NavigationStack is SwiftUI's modern push/pop navigation API (iOS 16+)
- 2. NavigationPath provides programmatic control and is Codable for state restoration
- 3. .navigationDestination(for:) provides type-safe view routing
- 4. @Environment(\.dismiss) is the recommended way to pop views programmatically
- 5. Use NavigationStack for iPhone, NavigationSplitView for iPad column layouts
Interview Tips
- • Explain why NavigationStack replaced NavigationView (programmatic control, Codable path)
- • Know how to save/restore navigation state using NavigationPath.CodableRepresentation
- • Be able to implement a multi-step onboarding flow with programmatic navigation
- • Discuss when to use NavigationStack vs NavigationSplitView
Cheat Sheet
NavigationStack (iOS 16+): Push/pop navigation with NavigationPath.
NavigationPath: Observable, Codable collection of hashable values.
Key modifiers:
- .navigationDestination(for:) — type-safe view routing
- @Environment(.dismiss) — programmatic pop
- path.append(value) — push
- path.removeLast() — pop
NavigationStack replaces NavigationView. NavigationSplitView for column layouts.