0Pricing
Swift Academy · Leçon

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 versa

Dimensionnement 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 = size

Apparence et style

Définissez overrideUserInterfaceStyle sur le contrôleur d’hébergement pour contrôler indépendamment le mode sombre ou clair.

hostingVC.overrideUserInterfaceStyle = .dark

Configuration 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

  1. UIViewRepresentable : intégrer des vues UIKit
  2. Modèle Coordinator pour la communication avec les délégués
  3. UIViewControllerRepresentable
  4. UIHostingController : SwiftUI dans UIKit
← Retour à Swift Academy