0Pricing
Swift Academy · Ders

UIViewControllerRepresentable

UIImagePickerController gibi tam UIKit görünüm denetleyicilerini SwiftUI içine yerleştirin.

UIViewControllerRepresentable, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

UIViewControllerRepresentable Nedir?

UIViewRepresentable gibidir; ancak SwiftUI içinde kullanılmak üzere tam bir UIViewController sarmalar.

struct ImagePickerView: UIViewControllerRepresentable {
  @Binding var image: UIImage?
}

makeUIViewController

UIKit görünüm denetleyicisini oluşturun ve yapılandırın. SwiftUI temsil ediciyi ilk kez oluşturduğunda bir kez çağrılır.

func makeUIViewController(context: Context) -> UIImagePickerController {
  let vc = UIImagePickerController()
  vc.delegate = context.coordinator
  return vc
}

updateUIViewController

SwiftUI durumu her değiştiğinde çağrılır. Güncellenen değerleri mevcut görünüm denetleyicisine aktarın.

func updateUIViewController(_ vc: UIImagePickerController, context: Context) {
  // Update vc if needed (e.g., change source type)
}

dismantleUIViewController

Görünüm denetleyicisi hiyerarşiden kaldırılmadan önce çağrılan statik temizleme yöntemidir.

static func dismantleUIViewController(_ vc: UIImagePickerController, coordinator: Coordinator) {
  vc.dismiss(animated: false)
}

UIDocumentPickerViewController'ı Sarmalama

Örnek: Kullanıcıların dosya seçmesine ve URL'leri SwiftUI'ye geri aktarmasına olanak tanımak için belge seçiciyi sarmalayın.

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) {}
}

Modal Olarak Gösterme

Modal sunum için UIViewControllerRepresentable öğesini bir .sheet içine yerleştirin.

@State private var showPicker = false
var body: some View {
  Button("Pick Image") { showPicker = true }
    .sheet(isPresented: $showPicker) {
      ImagePickerView(image: $selectedImage)
    }
}

Mail Composer Örneği

SwiftUI'den bir e-posta oluşturma sayfası sunmak için MFMailComposeViewController öğesini sarmalayın.

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) {}
}

Tam Ekran Görünümü

Ekranı tamamen kaplaması gereken görünüm denetleyicileri için .fullScreenCover uygulayın.

.fullScreenCover(isPresented: $showCamera) {
  CameraViewController()
}

Geri Çağrılar için Kapanışları Aktarma

Bağlamalar yerine olay bildirimleri için temsil ediciye kapanış geri çağrıları aktarın.

struct VideoPlayer: UIViewControllerRepresentable {
  let url: URL
  var onFinish: () -> Void
  // Coordinator calls onFinish when playback ends
}

Doğal Boyut

UIKit görünüm denetleyicileri kendi boyutlarını belirler. SwiftUI çerçeve değiştiricilerini veya görünüm denetleyicisinin tercih edilen içerik boyutunu kullanın.

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) {}
}

Yaygın Kullanım Alanları

UIViewControllerRepresentable şu amaçlarla yaygın olarak kullanılır: UIImagePickerController, MFMailComposeViewController, AVPlayerViewController, UIDocumentPickerViewController ve SFSafariViewController.

import SafariServices
struct SafariView: UIViewControllerRepresentable {
  let url: URL
  func makeUIViewController(context: Context) -> SFSafariViewController {
    SFSafariViewController(url: url)
  }
  func updateUIViewController(_ vc: SFSafariViewController, context: Context) {}
}

Kısa Kontrol

Temsil edicinin SwiftUI girdileri her değiştiğinde SwiftUI hangi yöntemi çağırır?

Ders Özeti

UIViewControllerRepresentable, tam UIKit görünüm denetleyicilerini sarmalar. makeUIViewController (bir kez oluşturma), updateUIViewController (durumu eşitleme) ve isteğe bağlı olarak dismantleUIViewController (temizleme) yöntemlerini uygulayın. Temsilci geri çağrıları için Koordinatör kullanın.

Sıkça Sorulan Sorular

“UIViewControllerRepresentable” dersi ücretsiz mi?

Evet — “UIViewControllerRepresentable” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“UIViewControllerRepresentable” dersinde ne öğreneceğim?

UIImagePickerController gibi tam UIKit görünüm denetleyicilerini SwiftUI içine yerleştirin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“UIViewControllerRepresentable” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. UIViewRepresentable: UIKit Görünümlerini Sarmalama
  2. Temsilci İletişimi için Coordinator Kalıbı
  3. UIViewControllerRepresentable
  4. UIHostingController: UIKit İçinde SwiftUI
← Swift Academy Sayfasına Dön