इस लेख में, आप प्रतिनिधियों और प्रतिनिधियों को बनाने के बारे में जानेंगे। सबसे पहले,
प्रतिनिधि क्या है?
प्रतिनिधि एक साधारण शब्द है जो वस्तुओं के बीच संचार को संदर्भित करता है। यह वस्तुओं और उनके बीच संचार को जोड़ने का एक आसान तरीका है।
प्रतिनिधि कैसे काम करता है?
प्रोटोकॉल की मदद से एक प्रतिनिधि बनाया जाता है। कक्षा में एक प्रोटोकॉल घोषित किया जाता है, जिसके अंदर कुछ घटना होगी, जो अन्य वर्गों को सूचित करना चाहिए। प्रोटोकॉल में हम फ़ंक्शन की घोषणा लिखते हैं और इसे कॉलिंग क्लास के अंदर परिभाषित किया जाता है।
एक प्रतिनिधि कैसे बनाएं?
हम इसे एक उदाहरण प्रोजेक्ट की मदद से करेंगे।
प्रदर्शन करने के लिए कदम -
-
एक वर्ग बनाएँ, इसे FirstViewController नाम दें, दूसरी कक्षा बनाएँ और इसे SecondViewController नाम दें। स्टोरीबोर्ड में उनके संबंधित व्यू कंट्रोलर बनाएं।
-
सेकेंड व्यू कंट्रोलर में एक प्रोटोकॉल घोषित करें, किसी भी वर्ग या अन्य वस्तुओं के बाहर एक प्रोटोकॉल घोषित किया जाता है।
protocol SecondViewControllerDelegate { func buttonPressedInVC2() }
-
सेकेंड व्यू कंट्रोलर में, हमारे द्वारा अभी बनाए गए प्रतिनिधि का एक वैकल्पिक ऑब्जेक्ट बनाएं,
var delegate: SecondViewControllerDelegate?
-
हमें प्रोटोकॉल में घोषित फ़ंक्शन को कॉल करने की आवश्यकता है, जब सेकंड व्यू कंट्रोलर में कुछ घटना होती है, तो एक ईवेंट बनाएं जो दूसरे व्यू कंट्रोलर में एक बटन दबाए जाने पर होता है।
@IBAction func buttonTapped(_ sender: UIButton) { self.delegate?.buttonPressedInVC2() self.navigationController?.popViewController(animated: true) }
सेकेंड व्यू कंट्रोलर में यह सब आवश्यक है, अब फर्स्ट व्यू कंट्रोलर पर काम करते हैं।
-
हमें FirstViewController को SecondViewControllerDelegate के अनुरूप/कार्यान्वित करने की आवश्यकता है, और यह स्वचालित रूप से आपको प्रोटोकॉल स्टब्स जोड़ने के लिए कहेगा।
extension FirstViewController: SecondViewControllerDelegate { func buttonPressedInVC2() { } }
-
जिस प्रोटोकॉल को हमने अभी लागू किया है उसके अंदर हमें वह कोड लिखना चाहिए जिसे हम निष्पादित करना चाहते हैं जब यह प्रतिनिधि कार्रवाई होती है।
आइए FirstViewController में एक लेबल बनाएं और डेलिगेट मेथड को कॉल करने पर उसका टेक्स्ट बदलें।
extension FirstViewController: SecondViewControllerDelegate { func buttonPressedInVC2() { self.lblOne.text = "Delegate Implemented" } }
-
एक आखिरी कदम यह है कि सेकेंड व्यू कंट्रोलर में प्रतिनिधि ऑब्जेक्ट वैकल्पिक है और इसे असाइन किए जाने तक शून्य होगा, इसलिए फर्स्ट व्यू कंट्रोलर में हम फर्स्ट व्यू कंट्रोलर से सेकेंड व्यू कंट्रोलर पर जाते समय उस ऑब्जेक्ट को असाइन करेंगे।
आइए उसके लिए FirstViewController में एक बटन बनाएं।
@IBAction func goToNextVC(_ sender: Any) { let vc = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController vc.delegate = self self.navigationController?.pushViewController(vc, animated: true) }
-
और अगर आपको अभी तक इसका एहसास नहीं हुआ है, तो हमें नेविगेशन कंट्रोलर में FirstViewController को एम्बेड करना होगा। आइए ऐप चलाएं और देखें कि यह कैसे काम करता है।