UIHostingController : SwiftUI dans UIKit
Intégrer des vues SwiftUI dans des applications UIKit avec UIHostingController.
UIHostingController : SwiftUI dans UIKit est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Qu’est-ce que UIHostingController ?
UIHostingController est un contrôleur de vue UIKit qui héberge une hiérarchie de vues SwiftUI.
import SwiftUI
let swiftUIView = Text("Hello from SwiftUI")
let hostingVC = UIHostingController(rootView: swiftUIView)Intégration dans un UIViewController
Ajoutez un contrôleur d’hébergement comme contrôleur de vue enfant à l’aide de l’API standard des contrôleurs enfants VC.
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let child = UIHostingController(rootView: ContentView())
addChild(child)
view.addSubview(child.view)
child.view.frame = view.bounds
child.didMove(toParent: self)
}
}Mise en page automatique avec Hosting Controller
Fixez la vue du contrôleur d’hébergement avec Auto Layout afin de l’intégrer à une mise en page UIKit.
child.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
child.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
child.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
child.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
child.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])Mise à jour de la vue racine
Mettez à jour la vue SwiftUI hébergée en définissant rootView sur le contrôleur d’hébergement.
let hostingVC = UIHostingController(rootView: MyView(count: 0))
// Later:
hostingVC.rootView = MyView(count: 5)Présentation modale
Présentez un contrôleur d’hébergement comme n’importe quelle présentation modale UIKit, en intégrant du contenu SwiftUI à une présentation UIKit.
let vc = UIHostingController(rootView: MySwiftUIView())
present(vc, animated: true)Empilement dans la pile de navigation
Empilez un contrôleur d’hébergement dans un UINavigationController pour accéder au contenu SwiftUI depuis UIKit.
let vc = UIHostingController(rootView: DetailView())
navigationController?.pushViewController(vc, animated: true)Partage de données via ObservableObject
Transmettez un ObservableObject partagé à l’environnement de la vue SwiftUI pour permettre un flux de données bidirectionnel.
let model = SharedModel()
let vc = UIHostingController(rootView: SwiftUIView().environmentObject(model))
// Changes to model in UIKit update SwiftUI and vice versaDimensionnement du contrôleur d’hébergement
Utilisez sizeThatFits pour calculer la taille intrinsèque du contenu SwiftUI afin de l’intégrer à des vues défilantes.
let size = hostingVC.sizeThatFits(in: CGSize(width: 320, height: UIView.layoutFittingCompressedSize.height))
hostingVC.view.frame.size = sizeApparence et style
Définissez overrideUserInterfaceStyle sur le contrôleur d’hébergement pour contrôler indépendamment le mode sombre ou clair.
hostingVC.overrideUserInterfaceStyle = .darkConfiguration d’une application fondée sur des scènes
Dans une application fondée d’abord sur UIKit, vous pouvez remplacer le contrôleur de vue racine par un contrôleur d’hébergement afin d’effectuer une migration progressive.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options: UIScene.ConnectionOptions) {
guard let windowScene = scene as? UIWindowScene else { return }
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: ContentView())
self.window = window
window.makeKeyAndVisible()
}Cas d’utilisation
UIHostingController est idéal pour une migration progressive : conservez la navigation UIKit tout en intégrant de nouveaux écrans fonctionnels SwiftUI.
// UIKit app gradually migrated:
// - Old screens: UIViewController
// - New screens: UIHostingController(rootView: NewFeatureView())Vérification rapide
Quelle classe UIKit utilisez-vous pour intégrer une vue SwiftUI dans une hiérarchie de contrôleurs de vue UIKit ?
Récapitulatif de la leçon
UIHostingController(rootView:) fait le lien entre SwiftUI et UIKit. Ajoutez-le comme contrôleur de vue enfant avec des contraintes Auto Layout, ou présentez-le ou empilez-le. Mettez-le à jour via rootView. Partagez les données via ObservableObject et environmentObject.
Questions Fréquemment Posées
La leçon « UIHostingController : SwiftUI dans UIKit » est-elle gratuite ?
Oui — le texte complet de « UIHostingController : SwiftUI dans UIKit » 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 « UIHostingController : SwiftUI dans UIKit » ?
Intégrer des vues SwiftUI dans des applications UIKit avec UIHostingController. 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 4 sur 4.
Combien de temps prend la leçon « UIHostingController : SwiftUI dans UIKit » ?
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
- UIViewRepresentable : intégrer des vues UIKit
- Modèle Coordinator pour la communication avec les délégués
- UIViewControllerRepresentable
- UIHostingController : SwiftUI dans UIKit