UIHostingController: SwiftUI di Dalam UIKit
Menyematkan view SwiftUI ke aplikasi UIKit dengan UIHostingController.
UIHostingController: SwiftUI di Dalam UIKit adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Apa itu UIHostingController?
UIHostingController adalah pengontrol tampilan UIKit yang menampung hierarki tampilan SwiftUI.
import SwiftUI
let swiftUIView = Text("Hello from SwiftUI")
let hostingVC = UIHostingController(rootView: swiftUIView)Menyematkan dalam UIViewController
Tambahkan pengontrol hosting sebagai pengontrol tampilan anak menggunakan API VC anak standar.
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)
}
}Auto Layout dengan Pengontrol Hosting
Sematkan tampilan pengontrol hosting menggunakan Auto Layout agar terintegrasi ke dalam tata letak 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)
])Memperbarui Tampilan Root
Perbarui tampilan SwiftUI yang di-host dengan menetapkan rootView pada pengontrol hosting.
let hostingVC = UIHostingController(rootView: MyView(count: 0))
// Later:
hostingVC.rootView = MyView(count: 5)Menampilkan Secara Modal
Tampilkan pengontrol hosting seperti modal UIKit lainnya untuk menggunakan konten SwiftUI dalam presentasi UIKit.
let vc = UIHostingController(rootView: MySwiftUIView())
present(vc, animated: true)Mendorong ke Tumpukan Navigasi
Dorong pengontrol hosting ke UINavigationController untuk menavigasi ke konten SwiftUI dari UIKit.
let vc = UIHostingController(rootView: DetailView())
navigationController?.pushViewController(vc, animated: true)Berbagi Data melalui ObservableObject
Teruskan ObservableObject bersama ke lingkungan tampilan SwiftUI untuk aliran data dua arah.
let model = SharedModel()
let vc = UIHostingController(rootView: SwiftUIView().environmentObject(model))
// Changes to model in UIKit update SwiftUI and vice versaMenentukan Ukuran Pengontrol Hosting
Gunakan sizeThatFits untuk menghitung ukuran intrinsik konten SwiftUI saat menyematkannya dalam tampilan gulir.
let size = hostingVC.sizeThatFits(in: CGSize(width: 320, height: UIView.layoutFittingCompressedSize.height))
hostingVC.view.frame.size = sizeTampilan dan Gaya
Tetapkan overrideUserInterfaceStyle pada pengontrol hosting untuk mengontrol mode gelap/terang secara terpisah.
hostingVC.overrideUserInterfaceStyle = .darkPenyiapan App Berbasis Scene
Dalam app yang berfokus pada UIKit, Anda dapat mengganti pengontrol tampilan root dengan pengontrol hosting untuk melakukan migrasi secara bertahap.
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()
}Kasus Penggunaan
UIHostingController ideal untuk migrasi bertahap: pertahankan navigasi UIKit sambil menyematkan layar fitur SwiftUI yang baru.
// UIKit app gradually migrated:
// - Old screens: UIViewController
// - New screens: UIHostingController(rootView: NewFeatureView())Pemeriksaan Cepat
Kelas UIKit apa yang Anda gunakan untuk menyematkan tampilan SwiftUI di dalam hierarki pengontrol tampilan UIKit?
Ringkasan Pelajaran
UIHostingController(rootView:) menjembatani SwiftUI dengan UIKit. Tambahkan sebagai pengontrol tampilan anak menggunakan batasan Auto Layout, atau tampilkan/dorong pengontrol tersebut. Perbarui melalui rootView. Bagikan data melalui ObservableObject dan environmentObject.
Belajar Swift dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “UIHostingController: SwiftUI di Dalam UIKit” gratis?
Ya — teks lengkap “UIHostingController: SwiftUI di Dalam UIKit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “UIHostingController: SwiftUI di Dalam UIKit”?
Menyematkan view SwiftUI ke aplikasi UIKit dengan UIHostingController. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “UIHostingController: SwiftUI di Dalam UIKit” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- UIViewRepresentable: Membungkus View UIKit
- Pola Coordinator untuk Komunikasi Delegate
- UIViewControllerRepresentable
- UIHostingController: SwiftUI di Dalam UIKit