Fiche 05.01 — NavigationStack, NavigationLink et écran détail
Objectif
Savoir créer une navigation classique SwiftUI : une liste, un élément cliquable, un écran détail, un titre et une toolbar.
1. L’idée à comprendre
Depuis iOS 16, la navigation SwiftUI moderne repose sur NavigationStack. Elle remplace l’ancien NavigationView pour la plupart des nouveaux projets.
Structure classique :
2. Exemple liste vers détail
NavigationLink crée automatiquement le lien entre la cellule et l’écran détail.
3. Passer des données à l’écran détail
Le plus simple est de passer l’objet directement :
C’est très courant pour une liste locale ou déjà chargée.
Dans une app plus avancée, tu peux passer seulement un identifiant :
Puis l’écran détail recharge les données depuis un service ou un ViewModel.
4. Toolbar simple
La toolbar sert souvent à ajouter un bouton “plus”, “modifier”, “réglages” ou “profil”.
5. Navigation et MVVM
La vue peut gérer une navigation simple avec NavigationLink. Pour une navigation déclenchée après une action, par exemple après connexion, on utilisera plutôt une navigation programmatique avec une route ou un état.
Exemple simple :
En UIKit (rappel)
En UIKit, la navigation passe par un UINavigationController qui empile/dépile les écrans à la main. Tu instancies le VC détail puis tu le pushes :
Le titre et les boutons se configurent sur le navigationItem du VC, et le bouton retour est ajouté automatiquement (un popViewController implicite) :
Différence de mentalité : UIKit est impératif (tu crées un objet VC et tu ordonnes push/pop au bon moment), alors que SwiftUI est déclaratif (tu décris « ce lien mène à cet écran » et le système gère la pile).
👉 En SwiftUI : NavigationStack + NavigationLink { DetailView() } remplacent le UINavigationController et le pushViewController, sans instancier de VC.
Points à connaître
NavigationStack doit généralement entourer une grande zone de navigation, pas chaque petite cellule.
NavigationLink est idéal pour les listes vers détail.
Pour une app avec onglets, on met souvent une NavigationStack par onglet.
Résumé
NavigationStackest la base de la navigation SwiftUI moderne.NavigationLinkpermet d’aller vers un écran détail.- On peut passer un objet ou un identifiant à la vue détail.
.navigationTitledéfinit le titre de l’écran..toolbarajoute des actions dans la barre de navigation.