Intereting Posts
सफारी (आईओएस) से फाइल सिस्टम एक्सेस मल्टीलाइन पाठ के लिए चयनित यूआईटीक्स्टरेन्ज एडजस्टमेंट के लिए सीजीआरटीक? GradientLayer के साथ UIButton छवि को अंधेरे और ढाल गहरा आकार परिवर्तन और फसल छवि केंद्रित titleTextAttributes आईओएस 7 में UIAppearance फ़ॉन्ट ऐप्पल पुश सूचनाएं और इमोजी वर्ण UIButton पर वाम-संरेखित छवि और केंद्र पाठ आईओएस नियुक्त Initializers: NS_DESIGNATED_INITIALIZER का उपयोग करना IOS Default.png प्रत्येक बार दिखाएगा जब मेरा ऐप पृष्ठभूमि से अग्रभूमि में प्रवेश करेगा क्यों UIGestureRecognizer मेरे textField स्पष्ट बटन पर बुलाया जा रहा है? टोकन प्रमाणीकरण के साथ NSURL सत्र मैं आईओएस स्प्राइट किट एसकेवीडियोनोड में किसी वीडियो के प्लेबैक को कैसे नियंत्रित कर सकता हूं? क्लाउडकिट को सीकेएसेट के रूप में एक छवि को कैसे ठीक से भेजें? आईओएस ऐप सबमिशन राउटिंग ऐप आईओएस – फ़ायरबस फ़िल्टर क्वेरी

"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 प्रोजेक्ट में अतिरिक्त क्लास फ़ाइलों को जोड़कर बिना कोड के माध्यम से उन कस्टमाइजेशन को सेट करें।