Fiche 01.01 — Structure d’une app SwiftUI
Objectif
Comprendre où démarre une app SwiftUI, comment la première vue est affichée, et quel rôle jouent @main, App, WindowGroup et la vue racine.
1. L’idée à comprendre
Une app SwiftUI démarre dans une structure marquée avec @main.
Cette structure respecte le protocole App.
Dans son body, elle déclare une scène avec WindowGroup.
WindowGroup affiche la première vue de l’application.
Schéma simple :
2. Code minimal
3. Les éléments importants
@main
@main indique que cette structure est le point de départ de l’application.
Il ne peut y avoir qu’un seul @main dans une app.
App
App est le protocole qui décrit une application SwiftUI.
Quand tu écris :
Tu dis que SwiftUICourseApp représente ton application.
body: some Scene
Le body d’une app SwiftUI retourne une Scene.
Une Scene représente un espace d’affichage de ton app.
Sur iPhone, dans la majorité des cas, tu peux retenir que cette scène contient l’écran principal de l’app.
WindowGroup
WindowGroup contient la première vue affichée.
Exemple :
Ici, SwiftUI lance l’app en affichant AppRootView.
AppRootView
AppRootView n’est pas obligatoire, mais c’est un bon nom pour la vue racine.
Tu pourrais garder ContentView, mais AppRootView est plus clair quand cette vue sert à décider quel écran afficher au démarrage.
Par exemple :
4. Exemple avec une vraie racine d’app
Dans une vraie app, la vue racine sert souvent à choisir entre plusieurs flows :
- écran de connexion ;
- écran principal ;
- onboarding ;
- écran de chargement initial.
Exemple simplifié :
Ici, AppRootView décide quelle partie de l’app afficher selon l’état isLoggedIn.
Dans une vraie app, cet état viendrait plutôt d’un AuthViewModel, d’un SessionManager, de Firebase Auth ou d’une API propriétaire.
5. Exemple avec une TabView
MainTabView représente ici l’interface principale de l’app après connexion.
6. Structure de fichiers simple
Pour commencer proprement :
Cette structure suffit pour une petite app SwiftUI.
Plus tard, on pourra ajouter :
7. Cas particulier : ajouter un AppDelegate
Même dans une app SwiftUI, tu peux parfois avoir besoin d’un AppDelegate.
C’est utile pour certains SDK ou certaines fonctionnalités système, par exemple Firebase Cloud Messaging.
Exemple :
À retenir : tu peux avoir une app SwiftUI moderne tout en gardant un AppDelegate si une fonctionnalité en a besoin.
Résumé
Une app SwiftUI démarre généralement comme ça :
À retenir :
@mainmarque le point d’entrée de l’app ;Appdécrit l’application ;bodyretourne uneScene;WindowGroupcontient la première vue ;AppRootViewest une bonne racine pour décider quoi afficher au lancement ;- un
AppDelegatepeut encore être ajouté si nécessaire.