Intereting Posts
यह कैसे जांच करें कि अब दिनांक 9: 00-18: 00 के दौरान है M34 पैरामीटर के साथ CATransform3DRotate विशिष्ट ऊंचाई फिट करने के लिए कोण को जानने की आवश्यकता है गैर-फ़ंक्शन प्रकार 'मॉड्यूल <Firebase>' को कॉल नहीं किया जा सकता UITableView पुनः लोडडेटा () निकाल दिया जाता है लेकिन देरी होती है बाल व्यू नियंत्रक रोटेशन विधियों को नहीं बुलाया जा रहा है एडोब फ्लेक्स मोबाइल – टेक्स्टएरे एंड्रॉइड पर स्क्रॉल करने से इनकार करते हैं, स्टेज वेबबुक बिल्कुल भी स्क्रॉल नहीं करेगा Parse.com से डेटा का उपयोग कर एक बटन सक्षम करना – स्विफ्ट यह आईओएस किस तरह का व्यंग्यात्मक त्रुटि है? वापस बटन पृष्ठभूमि छवि बदलना क्या सूचनाओं को उपयोगकर्ता को सूचित किए बिना कोड चलाने के लिए उपयोग किया जा सकता है? प्रेषण_एएसआईएनसीसी के भीतर अतुल्यकालिक यूआरएल अनुरोध कैशिंग के साथ NSURLRequest काम नहीं कर रहा है नक्शा एनोटेशन दृश्य की छवि के मूल को बदलें? प्रविष्टि बिंदु (_main) अपरिभाषित xcode 6 IPhone में OneNote webUrl को खोलने में असमर्थ?

"DequeuereusableCellWithIdentifier" के साथ "viewWithTag" का उपयोग क्यों करें?

क्या कोई कृपया समझा सकता है कि आपको viewWithTag में एक सेल से dequeueReusableCellWithIdentifier दृश्य (उदाहरण के लिए UILabel आदि) को देखने के लिए दृश्य का उपयोग क्यों करना चाहिए dequeueReusableCellWithIdentifier ?

कुछ पृष्ठभूमि जानकारी: मेरे पास एक कस्टम UITableViewCell जिसमें कुछ UILabel एस के साथ (मैंने इसके नीचे का एक सरल संस्करण पुनः प्रकाशित किया है)। इन लेबलों को संबद्ध एनआईबी फ़ाइल में परिभाषित किया जाता है और उन्हें IBOutlet साथ घोषित किया जाता है और कस्टम सेल के नियंत्रक वर्ग को वापस लिंक किया जाता है। dequeueReusableCellWithIdentifier के dequeueReusableCellWithIdentifier , मैं यह कर रहा हूँ:

 CustomCell *customCell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCellId"]; if (customCell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil]; for (id oneObject in nib) if ([oneObject isKindOfClass:[CustomCell class]]) customCell = (CustomCell *)oneObject; } customCell.firstLabel.text = @"Hello"; customCell.secondLabel.text = @"World!"; return customCell; 

सब कुछ ठीक काम करता है हालांकि मैंने जो ट्यूटोरियल्स को देखा है, ऐसा लगता है कि जब लेबल के मूल्यों को बदलते हैं तो मुझे इसके बजाय यह करना चाहिए:

 UILabel *firstLabel = (UILabel *)[customCell.contentView viewWithTag:555]; firstLabel.text = @"Hello"; UILabel *secondLabel = (UILabel *)[customCell.contentView viewWithTag:556]; secondLabel.text = @"World!"; 

(लेबल के टैग मान एनआईबी में सेट किए गए हैं)

क्या कोई मुझे बता सकता है कि किस पद्धति को पसंद किया गया है और क्यों?

धन्यवाद!

Solutions Collecting From Web of ""DequeuereusableCellWithIdentifier" के साथ "viewWithTag" का उपयोग क्यों करें?"

viewWithTag: माता-पिता पर आईबीओटललेट गुण स्थापित करने के बिना, या यहां तक ​​कि बिना viewWithTag: बाल नज़रिया खींचने का एक त्वरित और गंदा तरीका है।

बहुत ही सरल मामलों के लिए यह एक स्वीकार्य समाधान है, जो कि वही viewWithTag: हालांकि अगर आप उस सेल को बहुत से फिर से उपयोग करने जा रहे हैं या आप चाहते हैं कि उसे एक अधिक डेवलपर-अनुकूल इंटरफेस दिया जाए तो आप अपने पहले उदाहरण की तरह उप-वर्ग और वास्तविक गुणों का उपयोग करना चाहेंगे।

तो देखने के उपयोग के viewWithTag: यदि यह एक बहुत ही सरल सेल है जिसे आपने आईबी में कोई उपवर्ग नहीं बनाया है और केवल कुछ लेबल्स के साथ। कुछ अधिक महत्वपूर्ण के लिए वास्तविक गुणों के साथ एक सेल उपवर्ग का उपयोग करें

मुझे एहसास हो गया है कि यदि तत्वों को सेल प्रोग्राम में जोड़ा गया है (आईबीओलेट के माध्यम से एनआईबी और हुक-अप में परिभाषित नहीं किया गया है), तो "व्यूवथटैग" का उपयोग करने वाले तत्वों को पुनः प्राप्त करने के लिए उपयोगी है-ये प्रत्येक आवृत्ति के लिए कई लेबल आदि को रोकता है। सेल का

मेरे लिए, देखने के साथ एक परमेश्वर दिया गया है। सबसे पहले: टोस्किनूर जैसी लूप में सभी विचारों का इलाज करना वास्तव में आसान है। इसके अलावा, मैं व्यक्तिगत रूप से इस तरह से पसंद करता हूं क्योंकि अगर मैं कोड पर एक नज़र डालता हूं और देखना चाहता हूं कि दृश्य के साथ क्या होता है, तो मैं केवल टैग के लिए खोज करता हूं इसे हर जगह उपयोग किया जाता है, दृश्य को नियंत्रित किया जाता है। Xib दृष्टिकोण के प्रति विरोध किया गया है जहां आपको कोड और एक्सआईबी में भी देखना होगा। इसके अलावा, यदि आपके पास एक xib में एक ऑफस्क्रीन दृश्य है, तो आप इसे देख सकते हैं मुझे अन्य प्रोग्रामर द्वारा बनाए गए बहुत सारे xibs मिले जो बहुत सारे और बहुत सारे दृश्यों के साथ पूर्ण थे कुछ छिपे हुए, कुछ ऑफस्क्रीन, यह नहीं बता सका है कि किस वजह से सभी अतिव्यापी थे। उन मामलों में, मुझे लगता है xibs खराब हैं वे अब और पढ़ना आसान नहीं हैं। मैं कोड में बने सभी चीज़ों को पसंद करता हूं।

लेकिन अगर आप टैग के साथ काम करने का निर्णय लेते हैं, तो किसी भी टैग को हार्ड-कोडिंग से बचने के लिए याद रखें। इसके बजाय कोड को साफ और पठनीय रखने के लिए # परिभाषित परिभाषाओं की एक सूची बनाएं।

मैं हमेशा अपने UITableViewCell subclass के गुणों के लिए IBOutlets के माध्यम से हुक सूक्ष्मता को हुक निकालता हूं, जैसा आपने किया है मैं विचार का उपयोग करने के लिए किसी भी अच्छे कारण के बारे में नहीं सोच सकता।

UITableViewCell कक्षा संदर्भ से: "टेबल दृश्य में तालिका दृश्य का प्रतिनिधि: cellForRowAtIndexPath: हमेशा एक सेल का उपयोग करते समय सभी सामग्री को रीसेट कर देना चाहिए।" इसे सरल रखें, सामग्री दृश्य को साफ़ करें यह कस्टम सेल कक्षाओं के बारे में कोई धारणा नहीं बनाता है, कोई कस्ट नहीं, कोई क्लास निरीक्षण नहीं करता है:

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; if (cell != nil) { NSArray* contentSubViews = [cell.contentView subviews]; for (UIView* viewToRemove in contentSubViews) { [viewToRemove removeFromSuperview]; } } 

viewWithTag: UITableViewCell एक कस्टम उपवर्ग बनाने के बिना स्टाइल की अनुमति देता है

आप एक टैग निर्दिष्ट कर सकते हैं और एक प्रोटोटाइप UITableViewCell इंटरफ़ेस बिल्डर में फिर से पुन: उपयोग कर सकते हैं, फिर उस कक्ष के साथ दृश्य को अपने UITableViewController के कार्यान्वयन के भीतर संशोधित कर सकते हैं, उस कक्ष के लिए एक कस्टम वर्ग बनाने या सेल के सबव्यूज़ के लिए IBOutlets बनाने के बिना।

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