Das Coordinator-Pattern
Zentralisieren Sie die Logik des Navigationsflusses.
Das Coordinator-Pattern ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Navigationsproblem
Wenn Views andere Views direkt pushen und präsentieren, wird die Navigationslogik in der App verteilt. Jeder Bildschirm muss den nächsten Bildschirm kennen, wodurch eine enge Kopplung entsteht.
Das Coordinator-Pattern löst dieses Problem, indem es die Navigation in dedizierte Objekte auslagert.
Was ist ein Coordinator?
Ein Coordinator ist ein Objekt, dessen einzige Aufgabe darin besteht, den Navigationsablauf zu verwalten. Er entscheidet, welcher Bildschirm als Nächstes angezeigt wird, und erstellt die dafür benötigten View-Controller oder Views.
Views müssen sich nicht mehr um das Routing kümmern – sie signalisieren lediglich Ereignisse, und der Coordinator entscheidet, was zu tun ist.
Das Coordinator-Protokoll
Die meisten Implementierungen beginnen mit einem kleinen Protokoll, dem jeder Coordinator entspricht.
protocol Coordinator: AnyObject {
var childCoordinators: [Coordinator] { get set }
func start()
}Ein konkreter Coordinator
Ein konkreter Coordinator besitzt einen Navigation Controller und erstellt den ersten Bildschirm in 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)
}
}Views vom Routing entkoppeln
Der entscheidende Vorteil: Eine View erstellt den nächsten Bildschirm nicht mehr selbst. Stattdessen teilt sie ihrem Coordinator mit, dass ein Ereignis eingetreten ist, und der Coordinator übernimmt das Routing.
Dadurch kann ein Bildschirm in verschiedenen Abläufen wiederverwendet werden, ohne seinen Code zu ändern.
Ereignisse nach oben weitergeben
Views kommunizieren über einen Delegate oder eine Closure mit ihrem Coordinator. Die View weiß nicht, wohin sie als Nächstes führt.
protocol HomeViewControllerDelegate: AnyObject {
func homeDidSelectProfile()
}
final class HomeViewController: UIViewController {
weak var delegate: HomeViewControllerDelegate?
func profileTapped() {
delegate?.homeDidSelectProfile()
}
}Die Route verarbeiten
Der Coordinator entspricht dem Delegate und entscheidet, wie navigiert wird, wenn das Ereignis ausgelöst wird.
extension AppCoordinator: HomeViewControllerDelegate {
func homeDidSelectProfile() {
let profile = ProfileViewController()
navigationController.pushViewController(profile, animated: true)
}
}Untergeordnete Coordinators
Große Abläufe wie Onboarding oder Checkout erhalten eigene untergeordnete Coordinators. Der übergeordnete Coordinator startet einen untergeordneten Coordinator und hält ihn in childCoordinators fest, damit er aktiv bleibt.
func startOnboarding() {
let child = OnboardingCoordinator(navigationController: navigationController)
childCoordinators.append(child)
child.start()
}Speicherlecks vermeiden
Da der übergeordnete Coordinator die untergeordneten Coordinators hält, müssen Sie einen untergeordneten Coordinator entfernen, sobald sein Ablauf endet. Andernfalls entsteht ein Speicherleck. Ein gängiger Ansatz ist ein Finish-Callback.
func childDidFinish(_ child: Coordinator) {
childCoordinators.removeAll { $0 === child }
}Coordinators mit SwiftUI
In SwiftUI steuern Coordinators häufig den Pfad einer NavigationStack. Der Coordinator besitzt einen beobachtbaren Pfad, und Views fügen ihm Routen hinzu.
final class Router: ObservableObject {
@Published var path: [Route] = []
func push(_ route: Route) {
path.append(route)
}
}
enum Route: Hashable { case profile, settings }Vorteile im Überblick
Das Coordinator-Pattern bietet Ihnen:
- Wiederverwendbare Views, die keine Navigation fest einprogrammieren
- Zentralisierte Ablauf-Logik, die sich leicht ändern lässt
- Testbares Routing, das von der Benutzeroberfläche getrennt ist
- Zusammensetzbare Abläufe durch untergeordnete Coordinators
Kurze Überprüfung
Überprüfen Sie Ihr Verständnis von Coordinators.
Zusammenfassung
Sie haben das Coordinator-Pattern kennengelernt:
- Coordinators verwalten die Navigation, sodass Views unabhängig vom Routing bleiben
- Views geben Ereignisse über Delegates oder Closures weiter
- Untergeordnete Coordinators bilden in sich geschlossene Abläufe ab
- Entfernen Sie untergeordnete Coordinators, wenn Abläufe beendet sind, um Speicherlecks zu vermeiden
Zusammen mit MVVM ergeben Coordinators eine klare, gut testbare Architektur.
Häufig gestellte Fragen
Ist die Lektion „Das Coordinator-Pattern“ kostenlos?
Ja — der vollständige Text von „Das Coordinator-Pattern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Das Coordinator-Pattern“?
Zentralisieren Sie die Logik des Navigationsflusses. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Das Coordinator-Pattern“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Das MVVM-Pattern
- View Models an Views binden
- Das Coordinator-Pattern
- View Models testen