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