Temsilci İletişimi için Coordinator Kalıbı
UIKit temsilcisi geri çağrılarını SwiftUI'a aktarmak için makeCoordinator() kullanın.
Temsilci İletişimi için Coordinator Kalıbı, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.
Koordinatörler Neden Kullanılır?
UIKit temsilcileri bir nesne başvurusu gerektirir. SwiftUI'nin değer türleri temsilci olamaz. Koordinatör bu köprüyü sağlar.
struct ImagePicker: UIViewControllerRepresentable {
@Binding var image: UIImage?
// Coordinator will be the UIImagePickerControllerDelegate
}makeCoordinator()
Bir Koordinatör örneği döndüren makeCoordinator() yöntemini uygulayın. SwiftUI bunu makeUIView/Controller yöntemlerinden önce çağırır.
func makeCoordinator() -> Coordinator {
Coordinator(self)
}Koordinatör Sınıfı
Koordinatör, temsilci uyumluluğu için genellikle bir sınıftır ve üstündeki temsil ediciye bir başvuru tutar.
class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var parent: ImagePicker
init(_ parent: ImagePicker) { self.parent = parent }
}Temsilciyi Ayarlama
makeUIViewController içinde context.coordinator değerini temsilci olarak atayın.
func makeUIViewController(context: Context) -> UIImagePickerController {
let picker = UIImagePickerController()
picker.delegate = context.coordinator
return picker
}Temsilci Yöntemlerini Uygulama
Koordinatördeki temsilci geri çağrıları, üst öğedeki bağlamaları değiştirerek SwiftUI'ye veri yazar.
func imagePickerController(
_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]
) {
parent.image = info[.originalImage] as? UIImage
picker.dismiss(animated: true)
}İptal Geri Çağrısı
Seçiciyi kapatmak ve isteğe bağlı olarak SwiftUI'yi bilgilendirmek için iptal temsilcisini uygulayın.
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true)
}Koordinatör Aracılığıyla Veri Kaynağı
Koordinatörler, tablo ve koleksiyon görünümleri için veri kaynağı protokollerini (örneğin UITableViewDataSource) de uygulayabilir.
class Coordinator: NSObject, UITableViewDataSource {
var parent: MyTableView
init(_ p: MyTableView) { parent = p }
func tableView(_ tv: UITableView, numberOfRowsInSection s: Int) -> Int { parent.items.count }
func tableView(_ tv: UITableView, cellForRowAt ip: IndexPath) -> UITableViewCell {
let cell = tv.dequeueReusableCell(withIdentifier: "cell", for: ip)
cell.textLabel?.text = parent.items[ip.row]
return cell
}
}Koordinatörü Güncel Tutma
SwiftUI yeniden oluşturma yaptığında updateUIViewController çağrılır. Gerekirse koordinatörün başvurusunu yeni üst öğeyi gösterecek şekilde güncelleyin.
func updateUIViewController(_ vc: UIImagePickerController, context: Context) {
context.coordinator.parent = self
}Birden Çok Temsilci
Bir koordinatör birden çok temsilci protokolüne uyabilir ve tüm UIKit geri çağrılarını tek bir yerde toplayabilir.
class Coordinator: NSObject,
UIScrollViewDelegate,
UITextViewDelegate,
UISearchBarDelegate { ... }Koordinatör ve @Binding
Basit değer aktarımı için @Binding kullanın; UIKit bir temsilci başvurusu gerektirdiğinde Koordinatör kullanın.
// Simple: @Binding var text: String -> updateUIView writes uiView.text = text
// Complex: coordinator mediates UITextViewDelegate -> parent.text = textView.textKoordinatörün Yaşam Döngüsü
Koordinatör, temsil edici başına bir kez oluşturulur ve temsil edici görünüm ağacında kaldığı sürece varlığını sürdürür.
// makeCoordinator called once → stable delegate reference
// updateUIView called many times → push state changesKısa Kontrol
Temsilci köprüsü nesnesini oluşturmak için UIViewControllerRepresentable içinde hangi yöntemi uygulamanız gerekir?
Ders Özeti
Koordinatör deseni: makeCoordinator() yöntemini uygulayın, UIKit temsilci protokollerine uyan bir sınıf oluşturun, bu sınıfı makeUIViewController içinde context.coordinator aracılığıyla atayın ve parent içinde saklanan bağlamalar üzerinden SwiftUI'ye veri yazın.
Sıkça Sorulan Sorular
“Temsilci İletişimi için Coordinator Kalıbı” dersi ücretsiz mi?
Evet — “Temsilci İletişimi için Coordinator Kalıbı” 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.
“Temsilci İletişimi için Coordinator Kalıbı” dersinde ne öğreneceğim?
UIKit temsilcisi geri çağrılarını SwiftUI'a aktarmak için makeCoordinator() kullanın. 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 2. dersidir.
“Temsilci İletişimi için Coordinator Kalıbı” 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
- UIViewRepresentable: UIKit Görünümlerini Sarmalama
- Temsilci İletişimi için Coordinator Kalıbı
- UIViewControllerRepresentable
- UIHostingController: UIKit İçinde SwiftUI