Swift Academy · पाठ

डेलीगेट संचार के लिए Coordinator पैटर्न

UIKit डेलीगेट कॉलबैक को SwiftUI तक पहुँचाने के लिए makeCoordinator() का उपयोग करें।

पाठ 2, कुल 4 में से13 चरण

डेलीगेट संचार के लिए Coordinator पैटर्न, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Coordinator क्यों?

UIKit के प्रतिनिधियों को किसी ऑब्जेक्ट के संदर्भ की आवश्यकता होती है। SwiftUI के मान प्रकार प्रतिनिधि नहीं बन सकते। Coordinator इनके बीच का सेतु है।

struct ImagePicker: UIViewControllerRepresentable {
  @Binding var image: UIImage?
  // Coordinator will be the UIImagePickerControllerDelegate
}

makeCoordinator()

makeCoordinator() लागू करें और एक Coordinator इंस्टेंस लौटाएँ। SwiftUI इसे makeUIView/Controller से पहले कॉल करता है।

func makeCoordinator() -> Coordinator {
  Coordinator(self)
}

Coordinator क्लास

Coordinator आम तौर पर एक क्लास होता है (प्रतिनिधि के साथ संगतता के लिए), जो अपने पैरेंट रैप किए जा सकने वाले घटक का संदर्भ रखता है।

class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  var parent: ImagePicker
  init(_ parent: ImagePicker) { self.parent = parent }
}

प्रतिनिधि सेट करना

makeUIViewController में context.coordinator को प्रतिनिधि के रूप में असाइन करें।

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

प्रतिनिधि विधियाँ लागू करना

Coordinator में प्रतिनिधि कॉलबैक, पैरेंट पर बाइंडिंग बदलकर SwiftUI में मान वापस लिखते हैं।

func imagePickerController(
  _ picker: UIImagePickerController,
  didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]
) {
  parent.image = info[.originalImage] as? UIImage
  picker.dismiss(animated: true)
}

रद्द करने का कॉलबैक

पिकर को बंद करने और वैकल्पिक रूप से SwiftUI को सूचित करने के लिए रद्द करने वाला प्रतिनिधि लागू करें।

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
  picker.dismiss(animated: true)
}

Coordinator के माध्यम से डेटा स्रोत

Coordinator तालिका या संग्रह दृश्यों के लिए डेटा स्रोत प्रोटोकॉल (जैसे, UITableViewDataSource) भी लागू कर सकते हैं।

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

Coordinator को अपडेट रखना

जब SwiftUI फिर से रेंडर करता है, तो updateUIViewController कॉल किया जाता है। आवश्यकता होने पर Coordinator के संदर्भ को नए पैरेंट से अपडेट करें।

func updateUIViewController(_ vc: UIImagePickerController, context: Context) {
  context.coordinator.parent = self
}

कई प्रतिनिधि

एक Coordinator कई प्रतिनिधि प्रोटोकॉल के अनुरूप बन सकता है और सभी UIKit कॉलबैक को एक ही स्थान पर व्यवस्थित कर सकता है।

class Coordinator: NSObject,
  UIScrollViewDelegate,
  UITextViewDelegate,
  UISearchBarDelegate { ... }

Coordinator बनाम @Binding

सरल मान पास करने के लिए @Binding का उपयोग करें; जब UIKit को किसी प्रतिनिधि के संदर्भ की आवश्यकता हो, तब Coordinator का उपयोग करें।

// Simple: @Binding var text: String -> updateUIView writes uiView.text = text
// Complex: coordinator mediates UITextViewDelegate -> parent.text = textView.text

Coordinator का जीवनचक्र

प्रत्येक रैप किए जा सकने वाले घटक के लिए Coordinator एक बार बनाया जाता है और जब तक वह दृश्य वृक्ष में रहता है, तब तक जीवित रहता है।

// makeCoordinator called once → stable delegate reference
// updateUIView called many times → push state changes

त्वरित जाँच

प्रतिनिधि सेतु ऑब्जेक्ट बनाने के लिए UIViewControllerRepresentable में आपको कौन-सी विधि लागू करनी होगी?

पाठ का पुनरावलोकन

Coordinator पैटर्न में makeCoordinator() लागू करें, UIKit प्रतिनिधि प्रोटोकॉल के अनुरूप एक क्लास बनाएँ, उसे makeUIViewController में context.coordinator के माध्यम से असाइन करें और parent में संग्रहीत बाइंडिंग के ज़रिए SwiftUI में मान वापस लिखें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “डेलीगेट संचार के लिए Coordinator पैटर्न” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “डेलीगेट संचार के लिए Coordinator पैटर्न” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“डेलीगेट संचार के लिए Coordinator पैटर्न” में मैं क्या सीखूँगा?

UIKit डेलीगेट कॉलबैक को SwiftUI तक पहुँचाने के लिए makeCoordinator() का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“डेलीगेट संचार के लिए Coordinator पैटर्न” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. UIViewRepresentable: UIKit Views को लपेटना
  2. डेलीगेट संचार के लिए Coordinator पैटर्न
  3. UIViewControllerRepresentable
  4. UIHostingController: UIKit के भीतर SwiftUI
← Swift Academy पर वापस जाएँ