Le modèle Coordinator
Centralisez la logique de navigation.
Le modèle Coordinator est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Le problème de navigation
Lorsque les vues poussent et présentent directement d’autres vues, la logique de navigation se retrouve dispersée dans toute l’application. Chaque écran doit connaître l’écran suivant, ce qui crée un couplage étroit.
Le modèle des coordinateurs résout ce problème en déplaçant la navigation dans des objets dédiés.
Qu’est-ce qu’un coordinateur ?
Un coordinateur est un objet dont l’unique rôle est de gérer le flux de navigation. Il décide quel écran vient ensuite et crée les contrôleurs de vue ou les vues à afficher.
Les vues deviennent passives en matière de routage : elles signalent simplement les événements, et le coordinateur décide de la marche à suivre.
Le protocole du coordinateur
La plupart des implémentations commencent par un petit protocole auquel chaque coordinateur se conforme.
protocol Coordinator: AnyObject {
var childCoordinators: [Coordinator] { get set }
func start()
}Un coordinateur concret
Un coordinateur concret possède un contrôleur de navigation et construit le premier écran dans start().
final class AppCoordinator: Coordinator {
var childCoordinators: [Coordinator] = []
let navigationController: UINavigationController
init(navigationController: UINavigationController) {
self.navigationController = navigationController
}
func start() {
let vc = HomeViewController()
navigationController.setViewControllers([vc], animated: false)
}
}Découpler les vues du routage
Le principal avantage : une vue ne construit plus l’écran suivant. Elle indique plutôt à son coordinateur qu’un événement s’est produit, et le coordinateur effectue le routage.
Un écran peut ainsi être réutilisé dans différents flux sans modifier son code.
Faire remonter les événements
Les vues communiquent avec leur coordinateur au moyen d’un delegate ou d’une fermeture. La vue ne sait pas vers quelle destination elle mène.
protocol HomeViewControllerDelegate: AnyObject {
func homeDidSelectProfile()
}
final class HomeViewController: UIViewController {
weak var delegate: HomeViewControllerDelegate?
func profileTapped() {
delegate?.homeDidSelectProfile()
}
}Gérer la route
Le coordinateur se conforme au delegate et décide comment naviguer lorsque l’événement se déclenche.
extension AppCoordinator: HomeViewControllerDelegate {
func homeDidSelectProfile() {
let profile = ProfileViewController()
navigationController.pushViewController(profile, animated: true)
}
}Coordinateurs enfants
Les grands flux, comme l’intégration initiale ou le paiement, disposent de leurs propres coordinateurs enfants. Le parent démarre un enfant et le conserve dans childCoordinators afin qu’il reste en mémoire.
func startOnboarding() {
let child = OnboardingCoordinator(navigationController: navigationController)
childCoordinators.append(child)
child.start()
}Éviter les fuites mémoire
Comme le parent conserve les enfants, vous devez supprimer un enfant lorsque son flux se termine, sinon il provoquera une fuite mémoire. Une approche courante consiste à utiliser un rappel de fin.
func childDidFinish(_ child: Coordinator) {
childCoordinators.removeAll { $0 === child }
}Les coordinateurs avec SwiftUI
Dans SwiftUI, les coordinateurs pilotent souvent le chemin d’une NavigationStack. Le coordinateur possède un chemin observable, et les vues y ajoutent des routes.
final class Router: ObservableObject {
@Published var path: [Route] = []
func push(_ route: Route) {
path.append(route)
}
}
enum Route: Hashable { case profile, settings }Récapitulatif des avantages
Le modèle des coordinateurs vous offre :
- des vues réutilisables qui ne codent pas la navigation en dur
- une logique de flux centralisée, facile à modifier
- un routage testable, séparé de l’interface utilisateur
- des flux composables grâce aux coordinateurs enfants
Vérification rapide
Vérifiez votre compréhension des coordinateurs.
Récapitulatif
Vous avez découvert le modèle des coordinateurs :
- Les coordinateurs possèdent la navigation, ce qui permet aux vues d’ignorer le routage
- Les vues font remonter les événements par l’intermédiaire de delegates ou de fermetures
- Les coordinateurs enfants modélisent des flux autonomes
- Supprimez les enfants à la fin des flux pour éviter les fuites mémoire
Associés à MVVM, les coordinateurs forment une architecture propre et testable.
Questions Fréquemment Posées
La leçon « Le modèle Coordinator » est-elle gratuite ?
Oui — le texte complet de « Le modèle Coordinator » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Le modèle Coordinator » ?
Centralisez la logique de navigation. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Le modèle Coordinator » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Le modèle MVVM
- Lier les modèles de vue aux vues
- Le modèle Coordinator
- Tester les modèles de vue