क्या कोई भी someViewController.delegate = self
और self.delegate
के अर्थ की व्याख्या कर सकता है? वे हमारी मदद कहां करते हैं?क्या मतलब है .delegate = self?
उत्तर
प्रतिनिधियों संदेश संदेश भेजें।
उदाहरण के लिए: यदि आप एक्सेलेरोमीटर प्रतिनिधि का उपयोग करते हैं, तो आपको एक्सेलेरोमीटर के बारे में संदेश मिलेंगे।
यदि आप उस नए न्यूट्रीनो-डिटेक्शन प्रतिनिधि का उपयोग करते हैं, तो आपको क्षेत्र में पाए गए किसी भी न्यूट्रीनो के बारे में संदेश मिलेंगे।
यदि आप पॉपयूप्स का उपयोग करते हैं, तो पॉपूप्स आपको संदेश भेजते हैं। और जिस तरह से किया जाता है, पॉपअप के प्रतिनिधि के साथ है। कई सारे उदाहरण हैं।
तो, प्रतिनिधि संदेश भेजते हैं।
यह इतना आसान है।
आप पूछ सकते हैं, "यह संदेश कहां भेजता है?"
उत्तर यह है: यह संदेश भेजता है जहां आपने ".delegate" चीज़ सेट की है।
जब आप "प्रतिनिधि सेट करते हैं," आप जो कर रहे हैं वह कह रहा है कि आप कहां जाना चाहते हैं।
इसलिए,
blah.delegate = amazingPlace संदेशों को "amazingPlace" भेज देंगे।
blah.delegate = कहीं और संदेश "कहीं और" संदेश भेज देंगे।
blah.delegate = स्वयं आप को संदेश ...... भेज देंगे।
अक्सर आप संदेश "आप" में आने के लिए है, तो आप सिर्फ कहते हैं कि "blah.delegate = स्व"
यह एक बहुत ही आम गलती है, कोड की है कि रेखा को भूल जाना चाहते हैं।
यदि आप कोड की उस पंक्ति को भूल जाते हैं, तो आप भरे हुए हैं। संदेश कहीं भी पर जाते हैं, और आप यह पता लगाने की कोशिश कर रहे हैं कि क्या गलत हुआ है, आप अपने सिर को खरोंच कर रहे हैं।जब आप एक प्रतिनिधि का उपयोग करें, आपको लगता है कि आप प्रतिनिधि का उपयोग करना चाहते कहना है:
कुछ वरना आप क्या करना है। उद्देश्य-सी के साथ पुराने दिनों में, तुम सिर्फ यह करने के ...
@interface AppDelegate_Pad : NSObject <UIApplicationDelegate>
@interface BigTop : UIViewController <ASIHTTPRequestDelegate, UIPopoverControllerDelegate>
@interface Flying : UIViewController <UIAccelerometerDelegate>
आप देख सकते हैं कि 'BigTop' दो प्रतिनिधियों, अर्थात् ASIHTTPRequestDelegate और UIPopoverControllerDelegate उपयोग करना चाहता है। जबकि 'फ्लाइंग' केवल एक प्रतिनिधि का उपयोग करना चाहता है - यह एक्सेलेरोमीटर का उपयोग करना चाहता है।
स्विफ्ट में, यह आसान नहीं हो सकता - तुम सिर्फ एक अल्पविराम तो प्रोटोकॉल है:
class YourClass:UIViewController, SomeDelegate, AnotherDelegate
आप वास्तव में iPhone पर ज्यादा कुछ नहीं कर सकते हैं हर जगह प्रतिनिधियों का उपयोग किए बिना।
प्रतिनिधियों हर जगह और हमेशा आईओएस में किया जाता है।
यह पूरी तरह से सामान्य है कि एक वर्ग एक दर्जन से अधिक प्रतिनिधियों का उपयोग कर सकते है।
"फ़्लाइंग" ऊपर, "फ़्लाइंग" के लिए कोड में कहीं के उदाहरण में यह ASIHttpRequests के लिए कहीं न कहीं प्रतिनिधि सेट करना होगा कहने के लिए [[UIAccelerometer sharedAccelerometer] setDelegate:self];
BigTop के मामले में होता है,
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:gid forKey:@"gid"];
[request setPostValue:nom forKey:@"nom"];
[request setDelegate:self];
तैर साथ (साथ ऑब्जेक्टिव-सी पुराने दिनों में मत भूलना, x.delegate=self
बिल्कुल [x setDelegate:self]
के रूप में ही किया गया था।)
आजकल ift आप बस
x.delegate = self
टाइप करें और है कि इसके लिए बस इतना है है।
ताकि आप क्या कर रहे है। प्रतिनिधियों संदेश भेजें। आप जहां आप संदेशों जाना चाहता हूँ कहना है। बहुत आम तौर पर, आप उन्हें "आप" पर जाना चाहते हैं, इसलिए उस स्थिति में आप बस x.delegate=self
कहें।
उम्मीद है कि यह मदद करता है।
यदि किसी भी मामले में बोर्न का जवाब मदद नहीं करता है .. एक प्रतिनिधि मूल रूप से किसी ऑब्जेक्ट पर किसी ईवेंट की प्रतिक्रिया करता है और कहता है ".delegate = self" का अर्थ है कि उन प्रोटोकॉल को स्वयं में अपनाया गया है ... उदाहरण के लिए। तालिका तालिका में एक पंक्ति का चयन करने पर क्या होता है जब टेबलव्यू के प्रतिनिधि विधि "didSelectRowAtIndexPath" ... और यदि व्यू कंट्रोलर के पास टेबलव्यू है .. और "didSelectRowAtIndexPath" केवल उस व्यू कंट्रोलर में परिभाषित किया गया है तो हम कहेंगे ... tableview .delegate = self "... और" self.anything "का उपयोग यह कहने के लिए किया जाता है कि" कुछ भी "स्वयं की संपत्ति है .. उदाहरण के लिए एनएसएसटींग * कुछ भी; @property (nonatomic, retain) NSString * कुछ भी ;
फिर "self.anything"
Delegate
का उपयोग डेटा/संदेश बी/डब्ल्यू कक्षाओं के दो वस्तुओं को पास/संचारित करने के लिए किया जाता है। इधर, tableView
(भेजने वाले) viewController
(रिसीवर) के लिए डेटा/संदेश भेजता है। कस्टम viewController
में UITableView
लागू करने के उदाहरण पर विचार करें, UITableViewDataSource
& UITableViewDelegate
वास्तव में प्रोटोकॉल हैं। दुर्भाग्यवश, UIKit Framework
खुला स्रोत नहीं है। लेकिन मैं यह सुनिश्चित कर दूंगा कि कई लेखों का जिक्र करने के बाद आंतरिक रूप से क्या होता है।
प्रोटोकॉल बास्केटबॉल कोच की तरह कुछ आवश्यकताओं के साथ है। वह उन आवश्यकताओं का उपयोग करके कक्षा, संरचना, enum what to do?
जैसे खिलाड़ियों को बताता है। लेकिन वह स्वयं द्वारा doesn't knows
how to do?
। इसलिए, कक्षा या संरचना जो अनुरूप है कि प्रोटोकॉल को गेंद को डंक करने के दौरान उन आवश्यकताओं को कार्यान्वित करना चाहिए।
protocol UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
}
एक प्रोटोकॉल डेटा स्रोत प्रोटोकॉल तो यह हमेशा "वापसी प्रकार" के रूप में नीचे दिखाया गया है के साथ आवश्यक कार्यों में शामिल होने के लिए कहा गया है।
protocol UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
}
कार्यान्वयन UITableView कस्टम ViewController अंदर
class viewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let tableView = UITableView()
override func viewDidLoad {
tableView.delegate = self
tableView.dataSource = self
}
यहाँ, डैलिगेटर (प्रेषक) के रूप में कार्य करता है tableView
& प्रतिनिधि (रिसीवर) के रूप में viewController object i.e (self)
।
viewController
में UITableView
प्राप्त करने के लिए। इसे प्रोटोकॉल दोनों के अनुरूप होना चाहिए।
तो, viewController
क्लास ऑब्जेक्ट ने प्रोटोकॉल दोनों के उन सभी आवश्यक कार्यों को लागू किया है। अब self
का उपयोग UITableViewDelegate
प्रकार या UITableViewDataSource
प्रकार के रूप में किया जा सकता है क्योंकि प्रोटोकॉल को कक्षा के किसी ऑब्जेक्ट के प्रकार के रूप में उपयोग किया जा सकता है जो इसके अनुरूप है। अब, tableView
i.e delegate
& dataSource
दोनों गुण self
पर दिए गए हैं क्योंकि इसके समान प्रोटोकॉल प्रकार हैं।
दोनों प्रोटोकॉल के गैर वैकल्पिक कार्यों नीचे
प्रोटोकॉल के रूप में viewController
वर्ग वस्तु में लागू UITableViewDelegate
कार्यों
func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Do further processes like pushing or poping another viewController
}
प्रोटोकॉल UITableViewDataSource
कार्यों
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
}
1) जब उपयोगकर्ता का चयन करें एक खंड में एक पंक्ति tableview
(प्रेषक) यानी UItableView()
कॉल वें पैरामीटर tableView
& indexPath
पर डेटा पास करके दिखाए गए नीचे UITableViewDelegate
func viewController
ऑब्जेक्ट (रिसीवर) में delegate
संपत्ति के माध्यम से रहता है। अब viewController
उन पारित डेटा का उपयोग करता है ताकि आगे की प्रक्रियाएं जैसे कि नए कस्टम व्यू कंट्रोलर को धक्का देना या पॉप करना। UITableViewDatasource
प्रोटोकॉल के अंदर
tableView.delegate?.tableView(UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
2) कार्य tableview
(भेजने वाले के लिए कस्टम डेटा प्रदान करता है)। tableview
मापदंडों tableView
& indexPath
जो अपने datasource
संपत्ति के माध्यम से viewController
वस्तु (रिसीवर) में रहता है के लिए डेटा गुजर साथ डेटा स्रोत कार्यों को फोन करके viewController
वस्तु पूछता है। अब viewController
उन उत्तीर्ण डेटा का उपयोग करता है & कस्टम डेटा वापस tableview
देता है। अब tableview
उन डेटा का उपयोग करता indexpath पर "सेल" का एक वर्ग & वस्तु के रूप में "10" कोशिकाओं को बनाने के लिए
tableView.dataSource?.tableView(UITableView, numberOfRowsInSection section: Int) -> returns "10"
tableView.dataSource?.tableView(UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> returns "cell"
अंत में, पूरे UIKit Framework
का उपयोग करता है अपने सभी वर्गों में & डेटा स्रोत डिजाइन पैटर्न को सौंपने जैसे UIApplication
, UITableView
, UICollectionView
, UITextField
& डेटा संचार करने के लिए। दुर्भाग्यवश, UIKit Framework
खुला स्रोत नहीं है।
अरे वहाँ, मैं स्टैक ओवरफ्लो में एक नौसिखिया हूँ। मेरे ज्ञान के साथ कुछ ज्ञात क्यू का जवाब देने के लिए चारों ओर देख रहे हैं! –
उत्तर सही है। इसे मत छोड़ो! बस becoz यह पहले से ही 8 साल पहले जवाब दिया गया है। –
नीचे मतदान गलत है अगर जवाब गलत है। यदि आप नीचे वोट बटन पर होवर करते हैं तो आपको टूल टिप दिखाई देगी। मैं उन सवालों के जवाब देने का सुझाव दूंगा जो हाल ही में हैं और पहले से ही जवाब नहीं हैं। आप पसंदीदा टैग कर सकते हैं और यह आपके लिए अधिक प्रासंगिक होने के लिए प्रश्नों की सूची फ़िल्टर करेगा। इस तरह आप उत्तर देने के लिए नए प्रश्न पा सकते हैं। – Fogmeister
- 1. "मेरा ($ self,% myInputs) = @_;" क्या मतलब है?
- 2. 'self`
- 3. क्या jQuery के पास .delegate ('होवर') के लिए हैंडलआउट है?
- 4. .Delegate() और live() के बीच क्या अंतर है?
- 5. अपरिवर्तनीय मतलब क्या है?
- 6. /([^.]*)\.(.*)/ मतलब क्या है?
- 7. जावास्क्रिप्ट:/* @ @ */मतलब क्या है?
- 8. निर्धारक मतलब क्या है?
- 9. रेगेक्स: क्या (?! ...) मतलब है?
- 10. क्या है = = मतलब?
- 11. नया() मतलब क्या है?
- 12. क्या आवश्यकता है ('../') मतलब है?
- 13. कक्षा << आत्म मतलब क्या है?
- 14. बाध्यकारी पथों में कोष्ठक क्या मतलब है?
- 15. nibNameOrNil वास्तव में क्या मतलब है?
- 16. PHP क्या <<< मतलब है?
- 17. "var var = * $ self -> {class_var}" करने का क्या अर्थ है; "
- 18. self.delegate = self; ऐसा करने में क्या गलत है?
- 19. /proc/self/maps में "--- p" अनुमतियों का क्या अर्थ है?
- 20. os.error का क्या मतलब है?
- 21. FILL_AND_STROKE का क्या मतलब है?
- 22. संयोजन का मतलब क्या है?
- 23. दस्तावेज़ का क्या मतलब है?
- 24. यूआरएल में/#!/मतलब क्या है?
- 25. CallLog.Calls.NEW? इसका क्या मतलब है?
- 26. सी = # में क्या मतलब है?
- 27. जावास्क्रिप्ट में /// मतलब क्या है?
- 28. क्या() => {} का मतलब है?
- 29. विमस्क्रिप्ट में = ~ मतलब क्या है?
- 30. @plt का मतलब क्या है?
संयोग से वास्तव में न्यूट्रिनो डिटेक्शन प्रतिनिधि नहीं है। आपको अपना खुद लिखना है। – Fattie
धन्यवाद ... मैं वास्तव में इस पर उलझन में था। –
सबसे अच्छा स्पष्टीकरण मैंने अब तक देखा है – SeanNieuwoudt