UIViewControllerRepresentable
Kokonaisien UIKit-näkymäohjainten, kuten UIImagePickerControllerin, upottaminen SwiftUIhin.
UIViewControllerRepresentable on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on UIViewControllerRepresentable?
Se muistuttaa UIViewRepresentable-komponenttia, mutta käärii kokonaisen UIViewController-komponentin käytettäväksi SwiftUI:n sisällä.
struct ImagePickerView: UIViewControllerRepresentable {
@Binding var image: UIImage?
}makeUIViewController
Luokaa ja määrittäkää UIKit-näkymäohjain. Sitä kutsutaan kerran, kun SwiftUI piirtää representablen ensimmäisen kerran.
func makeUIViewController(context: Context) -> UIImagePickerController {
let vc = UIImagePickerController()
vc.delegate = context.coordinator
return vc
}updateUIViewController
Sitä kutsutaan aina, kun SwiftUI:n tila muuttuu. Siirtäkää päivitetyt arvot olemassa olevaan näkymäohjaimeen.
func updateUIViewController(_ vc: UIImagePickerController, context: Context) {
// Update vc if needed (e.g., change source type)
}dismantleUIViewController
Staattinen vapautusmetodi, jota kutsutaan ennen näkymäohjaimen poistamista hierarkiasta.
static func dismantleUIViewController(_ vc: UIImagePickerController, coordinator: Coordinator) {
vc.dismiss(animated: false)
}UIDocumentPickerViewController-komponentin kääriminen
Esimerkki: kääritkää asiakirjavalitsin, jotta käyttäjät voivat valita tiedostoja ja välittää niiden URL-osoitteet takaisin SwiftUI:hin.
struct DocumentPicker: UIViewControllerRepresentable {
@Binding var url: URL?
func makeUIViewController(context: Context) -> UIDocumentPickerViewController {
let picker = UIDocumentPickerViewController(forOpeningContentTypes: [.pdf])
picker.delegate = context.coordinator
return picker
}
func updateUIViewController(_ vc: UIDocumentPickerViewController, context: Context) {}
}Esittäminen modaalisesti
Sijoittakaa UIViewControllerRepresentable .sheet-muuntimen sisään modaalista esittämistä varten.
@State private var showPicker = false
var body: some View {
Button("Pick Image") { showPicker = true }
.sheet(isPresented: $showPicker) {
ImagePickerView(image: $selectedImage)
}
}Mail Composer -esimerkki
Käärikää MFMailComposeViewController, jotta voitte esittää sähköpostin kirjoitusnäkymän SwiftUI:sta.
struct MailView: UIViewControllerRepresentable {
@Binding var isShowing: Bool
func makeUIViewController(context: Context) -> MFMailComposeViewController {
let vc = MFMailComposeViewController()
vc.mailComposeDelegate = context.coordinator
vc.setSubject("Hello from SwiftUI")
return vc
}
func updateUIViewController(_ vc: MFMailComposeViewController, context: Context) {}
}Koko näytön peitto
Käyttäkää .fullScreenCover-muunninta näkymäohjaimille, joiden on täytettävä koko näyttö.
.fullScreenCover(isPresented: $showCamera) {
CameraViewController()
}Takaisinkutsujen välittäminen sulkuina
Sidosten sijaan välittäkää representablelle sulkuina toteutettuja takaisinkutsuja tapahtumista ilmoittamista varten.
struct VideoPlayer: UIViewControllerRepresentable {
let url: URL
var onFinish: () -> Void
// Coordinator calls onFinish when playback ends
}Luontainen koko
UIKit-näkymäohjaimet määrittävät oman kokonsa. Käyttäkää SwiftUI:n frame-muuntimia tai näkymäohjaimen suositeltua sisällön kokoa.
struct Popover: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
let vc = UIViewController()
vc.preferredContentSize = CGSize(width: 300, height: 200)
return vc
}
func updateUIViewController(_ vc: UIViewController, context: Context) {}
}Yleiset käyttötapaukset
UIViewControllerRepresentablea käytetään yleisesti seuraavien komponenttien kanssa: UIImagePickerController, MFMailComposeViewController, AVPlayerViewController, UIDocumentPickerViewController ja SFSafariViewController.
import SafariServices
struct SafariView: UIViewControllerRepresentable {
let url: URL
func makeUIViewController(context: Context) -> SFSafariViewController {
SFSafariViewController(url: url)
}
func updateUIViewController(_ vc: SFSafariViewController, context: Context) {}
}Pikatarkistus
Mitä metodia SwiftUI kutsuu aina, kun representablen SwiftUI-syötteet muuttuvat?
Oppitunnin kertaus
UIViewControllerRepresentable käärii kokonaisia UIKit-näkymäohjaimia. Toteuttakaa makeUIViewController (luo kerran), updateUIViewController (synkronoi tilan) ja halutessanne dismantleUIViewController (vapauttaa resurssit). Käyttäkää Coordinatoria delegaattien takaisinkutsuihin.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”UIViewControllerRepresentable” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “UIViewControllerRepresentable”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”UIViewControllerRepresentable”?
Kokonaisien UIKit-näkymäohjainten, kuten UIImagePickerControllerin, upottaminen SwiftUIhin. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”UIViewControllerRepresentable”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- UIViewRepresentable: UIKit-näkymien paketointi
- Coordinator-malli delegaattiviestintään
- UIViewControllerRepresentable
- UIHostingController: SwiftUI UIKitin sisällä