दिलचस्प पोस्ट
Scanf मतलब में अंतरिक्ष क्या है? php var_dump () बनाम print_r () MySQL – लंबाई () बनाम char_length () करी और आंशिक आवेदन के बीच अंतर क्या है? JQuery के कार्यों को ओवरराइड करें कैसे एक टुकड़ा से दूसरे टुकड़े को डेटा भेजने के लिए? सी # वेब ब्राउजर अजाक्स कॉल एक यादृच्छिक संख्या जनरेटर का उपयोग करते समय लोग कहते हैं कि मॉड्यूलो पूर्वाग्रह क्यों है? कच्चे HTML कोड प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करें एंड्रॉइड संसाधन – सरणियों का सरणी सी में वस्तु उन्मुख प्रोग्रामिंग srand (समय (नल)) बीज मूल्य जल्दी पर्याप्त नहीं बदलता है पार्स NSURL क्वेरी प्रॉपर्टी जावा: एक पाठ फ़ाइल कैसे पढ़ा जाए वेबड्राइवर – जावा का उपयोग करके तत्व की प्रतीक्षा करें

स्विफ्ट में प्रतिनिधि के उदाहरण

मैं यह जानने की कोशिश कर रहा हूं कि प्रोटोकॉल के साथ प्रतिनिधिमंडल कैसे काम करते हैं। मैं सब कुछ समझता हूं, लेकिन मैं सोच नहीं सकता कि तालिका दृश्यों का उपयोग करते समय और दृश्यों को स्क्रॉल करने के अलावा अन्य प्रतिनिधिमंडलों का उपयोग कब करना है

सामान्य तौर पर, प्रतिनिधिमंडल का इस्तेमाल कब किया जाता है?

वेब के समाधान से एकत्रित समाधान "स्विफ्ट में प्रतिनिधि के उदाहरण"

प्रतिनिधिमंडल क्या है?

सबसे पहले, आपको पता होना चाहिए कि प्रतिनिधिमंडल पैटर्न आईओएस दुनिया के लिए अनन्य नहीं है:

सॉफ्टवेयर इंजीनियरिंग में, प्रतिनिधिमंडल पैटर्न ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक डिज़ाइन पैटर्न होता है जो ऑब्जेक्ट कंसोलिज़ेशन को विरासत के रूप में एक ही कोड पुन: उपयोग करने की अनुमति देता है।

लेकिन आईओएस दुनिया में प्रतिनिधिमंडल के साथ काम करना बहुत आम है, मैं मानता हूं कि आप कई वर्गों को देख सकते हैं जो प्रस्तुति के उदाहरणों के लिए गुणों या व्यवहार प्रदान करने की क्षमता देने के लिए एक प्रतिनिधिमंडल / डेटा स्रोत प्रदान करते हैं। यह मुख्य तंत्रों में से एक है कि कैसे ऑब्जेक्ट कोकोआआउच में एक-दूसरे से बात करते हैं


विकल्प:

हालांकि, आइओएस में ऑब्जेक्ट एक-दूसरे से बात करने का प्रतिनिधिमंडल एकमात्र तरीका नहीं है, आप शायद जानना चाहें कि ये हैं:

  • अधिसूचना केंद्र
  • केवीओ (कुंजी-मान अवलोकन)
  • समापन नियंत्रक / कॉलबैक (क्लोजर का उपयोग करके)
  • लक्ष्य-क्रिया

टिप्पणी : यदि आप उन दोनों के बीच तुलना करने में रुचि रखते हैं, तो आप निम्न लेखों की जांच कर सकते हैं:

  • संचार पैटर्न
  • आईओएस में प्रतिनिधिमंडल, अधिसूचना या अवलोकन का उपयोग कब किया जाए
  • प्रतिनिधि बनाम पर्यवेक्षकों

प्रतिनिधिमंडल का उपयोग कब करना है?

तो, सवाल यह है: "तो मुझे उन विकल्पों के बजाय प्रतिनिधिमंडल का उपयोग क्यों करना चाहिए?"

मैं इसे सरल बनाने की कोशिश करूंगा; जब आप दोन ऑब्जेक्ट्स के बीच एक से एक संबंध रखते हैं, तो मैं प्रतिनिधिमंडल के इस्तेमाल का सुझाव दूंगा। इसे स्पष्ट करने के लिए, अधिसूचना केंद्र के बारे में थोड़ा सा बोलने का लक्ष्य यह है कि जब प्रतिनिधिमंडलों का उपयोग किया जाता है:

अधिसूचना केंद्र कई रिश्तों को एक का प्रतिनिधित्व करता है ; बस, यह काम करता है: किसी विशिष्ट घटना पर एक अधिसूचना पोस्टिंग (अधिसूचना) और इस नोटिफिकेशन (इस बारे में अधिसूचित) देखें – यह कहीं और देखे जा सकते हैं; तार्किक रूप से, यही एक है कि कई रिश्ते का मतलब है। यह प्रेक्षक पैटर्न का प्रतिनिधित्व है


प्रतिनिधि कैसे लागू करें?

सरल बनाने के उद्देश्य के लिए, मैं इसे चरणों के रूप में बताएगा:

  1. आवश्यकताओं को जानना: प्रत्येक प्रतिनिधि के पास अपने स्वयं के नियम हैं , जो प्रतिनिधि प्रोटोकॉल में सूचीबद्ध हैं जो कि विधि हस्ताक्षर का एक सेट है जिसे आपको इस प्रतिनिधिमंडल के अनुरूप बनाने के लिए कार्यान्वित करना चाहिए।

  2. प्रतिनिधिमंडल के अनुरूप: यह केवल आपके वर्ग को एक प्रतिनिधि के रूप में देकर, इसे अंकन करके दे रहा है। उदाहरण के लिए: class ViewController: UIViewController, UITableViewDelegate {}

  3. प्रतिनिधि ऑब्जेक्ट को कनेक्ट करना: एक प्रतिनिधि बनने के लिए अपनी कक्षा को चिह्नित करना पर्याप्त नहीं है, आपको यह सुनिश्चित करने की ज़रूरत है कि जिस वस्तु को आप अपनी कक्षा से जरूरी काम देने के लिए अपने वर्ग की पुष्टि करना चाहते हैं

  4. आवश्यकताओं को लागू करना: अंत में, आपके क्लास को प्रतिनिधि प्रोटोकॉल में सूचीबद्ध सभी आवश्यक तरीकों को लागू करना होगा।


उदाहरण के लिए

क्या यह थोड़ा भ्रामक लगता है? एक वास्तविक दुनिया उदाहरण के बारे में क्या?

इस परिदृश्य पर विचार करें:

कल्पना कीजिए कि आप ऑडियोज खेलने से संबंधित एक आवेदन का निर्माण कर रहे हैं कुछ दृश्य नियंत्रकों के पास एक ऑडियो प्लेयर का दृश्य होना चाहिए। सरलतम मामले में, हम मानते हैं कि इसमें एक नाटक / रोकें बटन होना चाहिए और इसके लिए एक और बटन होना चाहिए, हम कहते हैं, किसी प्लेलिस्ट को दिखाना, चाहे वह कैसा दिख सकता है।

अब तक बहुत अच्छा है, ऑडियो प्लेयर दृश्य में इसके अलग-अलग UIView वर्ग और .xib फ़ाइल है; इसे किसी भी वांछित दृश्य में एक सबव्यू के रूप में जोड़ा जाना चाहिए। नियंत्रक

अब, आप प्रत्येक दृश्य नियंत्रक के लिए दोनों बटनों में कार्यक्षमता कैसे जोड़ सकते हैं? आपको लगता है कि हो सकता है: "बस, मैं दृश्य वर्ग में IBAction और वह यही है", पहले तो देखो, यह ठीक लग सकता है, लेकिन थोड़ा सोचने के बाद, आपको पता चल जाएगा कि यदि आप नियंत्रक परत पर बटन दोहन की घटना को संभालने की कोशिश कर रहे हैं; इसे स्पष्ट करने के लिए, क्या होगा यदि प्रत्येक दृश्य नियंत्रक ने ऑडियो प्लेयर दृश्य में बटन टैप करते समय अलग-अलग कार्यक्षमता लागू की? उदाहरण के लिए: "ए" दृश्य में प्लेलिस्ट को टैप करना नियंत्रक एक तालिका दृश्य प्रदर्शित करेगा, लेकिन इसे "बी" दृश्य में टैप करना नियंत्रक एक पिकर प्रदर्शित करेगा

ठीक है, चलो इस मुद्दे पर प्रतिनिधिमंडल लागू करें:

"#" टिप्पणियां "प्रतिनिधि मंडल कैसे लागू करें" के चरणों का प्रतिनिधित्व करता है? अनुभाग।

ऑडियो प्लेयर देखें:

 // # 1: here is the protocol for creating the delegation protocol AudioPlayerDelegate { func playPauseDidTap() func playlistDidTap() } class AudioPlayerView: UIView { //MARK:- IBOutlets @IBOutlet weak private var btnPlayPause: UIButton! @IBOutlet weak private var btnPlaylist: UIButton! // MARK:- Delegate var delegate:AudioPlayerDelegate? // IBActions @IBAction private func playPauseTapped(_ sender: AnyObject) { delegate?.playPauseDidTap() } @IBAction private func playlistTapped(_ sender: AnyObject) { delegate?.playlistDidTap() } } 

नियंत्रक देखें:

 class ViewController: UIViewController { var audioPlayer: AudioPlayerView? // MARK:- Life Cycle override func viewDidLoad() { super.viewDidLoad() audioPlayer = AudioPlayerView() // # 3: the "AudioPlayerView" instance delegate will implemented by my class "ViewController" audioPlayer?.delegate = self } } // # 2: "ViewController" will implement "AudioPlayerDelegate": extension ViewController: AudioPlayerDelegate { // # 4: "ViewController" implements "AudioPlayerDelegate" requirments: func playPauseDidTap() { print("play/pause tapped!!") } func playlistDidTap() { // note that is should do a different behavior in each viewController... print("list tapped!!") } } 

जल्द सलाह:

प्रतिनिधिमंडल का उपयोग करने के सबसे लोकप्रिय उदाहरणों में से एक के रूप में दृश्य नियंत्रक के बीच डेटा वापस पास करना है।

डेलिगेशन का उपयोग तब किया जाता है जब आप ऑब्जेक्ट ए की ऑब्जेक्ट ए को किसी अन्य ऑब्जेक्ट बी से पारित करना चाहते हैं। आमतौर पर ऑब्जेक्ट बी ऑब्जेक्ट ऑब्जेक्ट ए बनाता है।

मैं कुछ परिस्थितियों की सूची दूंगा जहां आप प्रतिनिधिमंडल का उपयोग करेंगे

  1. हाँ तुम सही हो। तालिका दृश्य और स्क्रॉल दृश्य प्रतिनिधियों का उपयोग करते हैं क्योंकि वे जो भी रुचि रखते हैं (हमारे दृश्य नियंत्रक को उपयोग करना चाहते हैं) कि "किसी ने एक पंक्ति चुनी है!" या "किसी ने स्क्रॉल व्यू को स्क्रॉल किया!" न केवल स्क्रॉल दृश्य और तालिका दृश्यों का उपयोग प्रतिनिधियों, UITextField और UIDatePicker और कई अन्य विचारों का उपयोग प्रतिनिधि भी करते हैं!

  2. नियंत्रकों को देखने के भी प्रतिनिधि हैं उदाहरण के लिए, UIImagePickerController इसका कारण लगभग ऊपर के समान है – क्योंकि UIImagePickerController आपसे संदेश बताना चाहता है जैसे "कोई छवि चयनित हो गई है!" एक अन्य उदाहरण UIPopoverControllerDelegate होगा। यह प्रतिनिधि आपको बताता है कि "पॉपओवर बर्खास्त कर दिया गया है!"

  3. प्रतिनिधि CLLocationManager उपयोग करने वाले अन्य वर्गों में CLLocationManager शामिल हैं यह प्रतिनिधि आपको बताता है कि "उपयोगकर्ता के स्थान का पता लगाया गया है" या "उपयोगकर्ता के स्थान का पता लगाने में असफल" जैसी चीजें हैं।

  4. आप अपने कोड में प्रतिनिधिमंडल का उपयोग कर सकते हैं जब आपका एक निश्चित दृश्य नियंत्रक अन्य दृश्य नियंत्रकों को संदेश भेजना चाहता है। अगर यह एक सेटिंग्स व्यू नियंत्रक है, तो यह संदेश भेज सकता है जैसे "फ़ॉन्ट आकार सेटिंग बदल दी गई है!" और दृश्य नियंत्रक जो फ़ंट साइज सेटिंग बदलने की परवाह करता है, वह पता चलेगा कि लेबल का फ़ॉन्ट आकार कुछ और बदल जाएगा।

आईओएस दुनिया में प्रतिनिधिमंडल और अधिकांश में एमवीसी (मॉडल व्यू नियंत्रक) दृश्य के लिए नियंत्रक से बात करने का एक तरीका है और इसे "अंध संचार" कहा जाता है और प्रतिनिधिमंडल का मतलब है "अग्रणी छड़ी" को किसी अन्य वस्तु को देना (वास्तव में परवाह नहीं है जो नियंत्रण ले रहा है, लेकिन आम तौर पर नियंत्रक) को नियंत्रित करने के लिए कि यह दृश्य खुद को नियंत्रित नहीं कर सकता (याद रखना कि यह केवल एक दृश्य है) या इसे अधिक सरल बनाने के लिए स्वयं नहीं है ….
नियंत्रक एक दृश्य से बात कर सकता है लेकिन दृश्य प्रतिनिधिमंडल के बिना नियंत्रक से बात नहीं कर सकता

प्रतिनिधि विधि से चयन प्राथमिकताएं

बेस क्लास बनाएं और निम्नलिखित कोड डालें

यहां छवि विवरण दर्ज करें

फिर एक और कक्षा बनाएं तो कोड डालें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें