एक स्टोरीबोर्ड में, मैं कई नियंत्रकों के साथ उपयोग के लिए एक कस्टम सेल कैसे बना सकता हूं?


216

मैं एक ऐप में स्टोरीबोर्ड का उपयोग करने की कोशिश कर रहा हूं जो मैं काम कर रहा हूं। ऐप में लिस्ट और उपयोगकर्ता हैं और प्रत्येक में अन्य का एक संग्रह (किसी सूची के सदस्य, उपयोगकर्ता द्वारा स्वामित्व वाली सूची) हैं। तो, तदनुसार, मेरे पास ListCellऔर UserCellकक्षाएं हैं। लक्ष्य उन लोगों के लिए फिर से प्रयोग करने योग्य है जो पूरे ऐप में (यानी, मेरे किसी टेबलव्यू कंट्रोलर में) है।

यहीं से मैं एक समस्या में भाग रहा हूं।

मैं स्टोरीबोर्ड में एक कस्टम टेबलव्यू सेल कैसे बना सकता हूं जिसे किसी भी दृश्य नियंत्रक में फिर से उपयोग किया जा सकता है?

यहाँ मैं अब तक की कोशिश की विशिष्ट चीजें हैं।

  • नियंत्रक # 1 में, एक प्रोटोटाइप सेल जोड़ा, कक्षा को मेरे UITableViewCellउपवर्ग में सेट किया, पुन: उपयोग आईडी सेट किया, लेबल जोड़े और उन्हें वर्ग के आउटलेट में वायर्ड किया। नियंत्रक # 2 में, एक खाली प्रोटोटाइप सेल जोड़ा, इसे उसी कक्षा में सेट करें और पहले की तरह आईडी का पुन: उपयोग करें। जब यह चलता है, तो कक्ष कभी भी दिखाई नहीं देते हैं जब कक्ष नियंत्रक # 2 में दिखाए जाते हैं। नियंत्रक # 1 में ठीक काम करता है।

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

  • दोनों नियंत्रकों में खाली और सेट क्लास में प्रोटोटाइप रखे और मेरे सेल क्लास में आईडी का पुन: उपयोग करें। पूरी तरह से कोड में कोशिकाओं के यूआई का निर्माण किया। सेल सभी नियंत्रकों में पूरी तरह से काम करते हैं।

दूसरे मामले में मुझे संदेह है कि प्रोटोटाइप हमेशा एनआईबी से आगे निकल रहा है और अगर मैंने प्रोटोटाइप सेल को मार दिया, तो पुन: उपयोग आईडी के लिए मेरे एनआईबी को पंजीकृत करना काम करेगा। लेकिन तब मैं सेल से दूसरे फ्रेम में सेगमेंट को सेट करने में सक्षम नहीं होगा, जो कि स्टोरीबोर्ड का उपयोग करने का पूरा बिंदु है।

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

जवाबों:


205

जैसा कि मैंने इसे समझा, आप चाहते हैं:

  1. आईबी में एक सेल डिज़ाइन करें जिसका उपयोग कई स्टोरीबोर्ड दृश्यों में किया जा सकता है।
  2. उस सेल से अद्वितीय स्टोरीबोर्ड को कॉन्फ़िगर करें, सेल जिस दृश्य में है, उसके आधार पर।

दुर्भाग्य से, वर्तमान में ऐसा करने का कोई तरीका नहीं है। यह समझने के लिए कि आपके पिछले प्रयासों ने काम क्यों नहीं किया, आपको स्टोरीबोर्ड और प्रोटोटाइप टेबल व्यू सेल काम करने के तरीके के बारे में अधिक समझने की आवश्यकता है। (यदि आपको इस बात की कोई परवाह नहीं है कि ये अन्य प्रयास क्यों काम नहीं किए, तो अब छोड़ने के लिए स्वतंत्र महसूस करें। मुझे आपके लिए कोई जादुई वर्कअराउंड नहीं मिला है, यह सुझाव देने के अलावा कि आप बग दर्ज करते हैं।)

एक स्टोरीबोर्ड, संक्षेप में, .xib फ़ाइलों के संग्रह से बहुत अधिक नहीं है। जब आप एक टेबल व्यू कंट्रोलर को लोड करते हैं जिसमें एक स्टोरीबोर्ड से कुछ प्रोटोटाइप सेल होते हैं, तो यहां क्या होता है:

  • प्रत्येक प्रोटोटाइप सेल वास्तव में अपने स्वयं के एम्बेडेड मिनी-निब है। इसलिए जब टेबल व्यू कंट्रोलर लोड हो रहा होता है, तो यह प्रत्येक प्रोटोटाइप सेल के निब और कॉल से चलता है -[UITableView registerNib:forCellReuseIdentifier:]
  • तालिका दृश्य कोशिकाओं के लिए नियंत्रक से पूछता है।
  • आप शायद फोन करें -[UITableView dequeueReusableCellWithIdentifier:]
  • जब आप किसी दिए गए पुन: उपयोग करने वाले पहचानकर्ता के साथ एक सेल का अनुरोध करते हैं, तो यह जांचता है कि क्या यह एक निब पंजीकृत है। यदि ऐसा होता है, तो यह उस सेल का एक उदाहरण बताता है। यह निम्नलिखित चरणों से बना है:

    1. सेल के वर्ग को देखें, जैसा कि सेल के निब में परिभाषित किया गया है। पुकारते हैं [[CellClass alloc] initWithCoder:]
    2. -initWithCoder:विधि के माध्यम से चला जाता है और कहते हैं subviews और सेट गुण है कि निब में परिभाषित किया गया। ( IBOutletशायद यहाँ भी आदी हो, हालाँकि मैंने इसका परीक्षण नहीं किया है; ऐसा हो सकता है -awakeFromNib)
  • आप अपने सेल को कॉन्फ़िगर करते हैं, हालांकि आप चाहते हैं।

यहां ध्यान देने वाली महत्वपूर्ण बात यह है कि सेल की कक्षा और कोशिका की दृश्य उपस्थिति के बीच अंतर है । आप एक ही कक्षा के दो अलग-अलग प्रोटोटाइप सेल बना सकते हैं, लेकिन उनके सबव्यू के साथ पूरी तरह से अलग तरीके से रखी गई हैं। वास्तव में, यदि आप डिफ़ॉल्ट UITableViewCellशैलियों का उपयोग करते हैं, तो वास्तव में यही हो रहा है। "डिफ़ॉल्ट" शैली और "उपशीर्षक" शैली, उदाहरण के लिए, दोनों एक ही UITableViewCellवर्ग द्वारा दर्शाए गए हैं ।

यह महत्वपूर्ण है : सेल के वर्ग में एक विशेष दृश्य पदानुक्रम के साथ एक-से-एक सहसंबंध नहीं होता है । दृश्य पदानुक्रम पूरी तरह से उस प्रोटोटाइप सेल में निर्धारित होता है जो इस विशेष नियंत्रक के साथ पंजीकृत था।

नोट, साथ ही, कि सेल का पुन: उपयोग करने वाला पहचानकर्ता कुछ वैश्विक सेल औषधालय में पंजीकृत नहीं था। पुन: उपयोग पहचानकर्ता केवल एक UITableViewउदाहरण के संदर्भ में उपयोग किया जाता है ।


इस जानकारी को देखते हुए, आइए देखें कि आपके उपरोक्त प्रयासों में क्या हुआ।

नियंत्रक # 1 में, एक प्रोटोटाइप सेल जोड़ा, वर्ग को मेरे UITableViewCell उपवर्ग में सेट किया, पुन: उपयोग आईडी सेट किया, लेबल जोड़े और उन्हें वर्ग के आउटलेट में वायर्ड किया। नियंत्रक # 2 में, एक खाली प्रोटोटाइप सेल जोड़ा, इसे उसी कक्षा में सेट करें और पहले की तरह आईडी का पुन: उपयोग करें। जब यह चलता है, तो कक्ष कभी भी दिखाई नहीं देते हैं जब कक्ष नियंत्रक # 2 में दिखाए जाते हैं। नियंत्रक # 1 में ठीक काम करता है।

यह अपेक्षित है। जबकि दोनों कोशिकाओं में एक ही वर्ग था, दृश्य पदानुक्रम जो कि नियंत्रक # 2 में सेल को पास किया गया था, पूरी तरह से साक्षात्कार से रहित था। तो आपको एक खाली सेल मिला, जो कि आपने प्रोटोटाइप में डाला है।

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

फिर, यह अपेक्षित है। पुन: उपयोग पहचानकर्ता स्टोरीबोर्ड दृश्यों या nibs के बीच साझा नहीं किया जाता है, इसलिए तथ्य यह है कि इन सभी अलग-अलग कोशिकाओं के समान पुन: उपयोग पहचानकर्ता व्यर्थ था। टेबलव्यू से वापस मिलने वाले सेल में एक रूप होगा जो स्टोरीबोर्ड के उस दृश्य में प्रोटोटाइप सेल से मेल खाता है।

यह समाधान हालांकि करीब था। जैसा कि आपने उल्लेख किया है, आप बस प्रोग्राम को कॉल कर सकते हैं -[UITableView registerNib:forCellReuseIdentifier:], UINibजिसमें सेल शामिल है, और आप उसी सेल को वापस प्राप्त करेंगे। (यह नहीं है क्योंकि प्रोटोटाइप नीब को "ओवरराइडिंग" कर रहा था; आपने बस निब को टेबलव्यू के साथ पंजीकृत नहीं किया था, इसलिए यह अभी भी स्टोरीबोर्ड में एम्बेडेड निब को देख रहा था।) दुर्भाग्य से, इस दृष्टिकोण के साथ एक दोष है। स्टोरीबोर्ड सेगमेंट को एक स्टैंडअलोन निब में सेल में हुक करने का कोई तरीका नहीं है।

दोनों नियंत्रकों में खाली और सेट क्लास में प्रोटोटाइप रखे और मेरे सेल क्लास में आईडी का पुन: उपयोग करें। पूरी तरह से कोड में कोशिकाओं के यूआई का निर्माण किया। सेल सभी नियंत्रकों में पूरी तरह से काम करते हैं।

सहज रूप में। उम्मीद है, यह आश्चर्यजनक है।


तो, इसीलिए यह काम नहीं किया। आप स्टैंडअलोन निब में अपनी कोशिकाओं को डिज़ाइन कर सकते हैं और उन्हें कई स्टोरीबोर्ड दृश्यों में उपयोग कर सकते हैं; आप वर्तमान में उन कक्षों पर स्टोरीबोर्ड सेगमेंट को हुक नहीं कर सकते। उम्मीद है, हालांकि, आपने इसे पढ़ने की प्रक्रिया में कुछ सीखा है।


आह, मैं समझ गया। आपने मेरी गलतफहमी को भुनाया- दृश्य पदानुक्रम मेरी कक्षा से पूरी तरह स्वतंत्र है। पूर्वव्यापी में स्पष्ट! महान जवाब के लिए धन्यवाद।
क्लिफ डब्ल्यू

अब असंभव नहीं है, ऐसा लगता है: stackoverflow.com/questions/8574188/…
रिच अपोडाका

7
@ रायचोदका मैंने अपने जवाब में उस समाधान का उल्लेख किया। लेकिन यह स्टोरीबोर्ड में नहीं है; यह एक अलग निब में है। इसलिए आप सेगमेंट को तार नहीं कर सकते हैं या अन्य स्टोरीबोर्ड-ईश चीजें नहीं कर सकते हैं। इसलिए, यह प्रारंभिक प्रश्न को पूरी तरह से संबोधित नहीं करता है।
बीजे होमर

XCode8 के अनुसार यदि आप एक स्टोरीबोर्ड केवल समाधान चाहते हैं तो निम्नलिखित वर्कअराउंड काम करने लगता है। चरण 1) ViewController # 1 में एक टेबलव्यू में अपने प्रोटोटाइप सेल बनाएँ और कस्टम UITableViewCell वर्ग चरण 2 के साथ संबद्ध) ViewController # 2 के तालिका दृश्य में उस सेल को कॉपी / पेस्ट करें। समय के साथ आपको स्टोरीबोर्ड में आपके द्वारा बनाई गई प्रतियों को हटाकर और अपडेट किए गए प्रोटोटाइप में वापस पेस्ट करके सेल की प्रतियों को मैन्युअल रूप से अपडेट करना याद रखना होगा।
जेंगलसमा

शानदार उत्तर, मुझे एक अनुवर्ती प्रश्न मिला है:> "एक स्टोरीबोर्ड, संक्षेप में, .xib फ़ाइलों के संग्रह से बहुत अधिक नहीं है" यदि यह मामला है, तो एक एक्सिब को एम्बेड करना इतना मुश्किल क्यों है एक स्टोरीबोर्ड?
१।

58

बीजे होमर द्वारा महान जवाब के बावजूद मुझे लगता है कि मेरे पास एक समाधान है। जहां तक ​​मेरा परीक्षण है, यह काम करता है।

अवधारणा: xib सेल के लिए एक कस्टम क्लास बनाएँ। वहां आप एक स्पर्श कार्यक्रम की प्रतीक्षा कर सकते हैं और प्रोग्राम को तार्किक रूप से निष्पादित कर सकते हैं। अब हम सभी की जरूरत है कि नियंत्रक सेगमेंट का प्रदर्शन करें। मेरा समाधान इसे में स्थापित करना है tableView:cellForRowAtIndexPath:

उदाहरण

मेरे पास एक DetailedTaskCell.xibटेबल सेल है जिसमें मैं कई टेबल व्यू में उपयोग करना चाहता हूं:

DetailedTaskCell.xib

TaskGuessTableCellउस सेल के लिए एक कस्टम क्लास है :

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

यहां जादू पैदा होता है।

// TaskGuessTableCell.h
#import <Foundation/Foundation.h>

@interface TaskGuessTableCell : UITableViewCell
@property (nonatomic, weak) UIViewController *controller;
@end

// TashGuessTableCell.m
#import "TaskGuessTableCell.h"

@implementation TaskGuessTableCell

@synthesize controller;

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSIndexPath *path = [controller.tableView indexPathForCell:self];
    [controller.tableView selectRowAtIndexPath:path animated:NO scrollPosition:UITableViewScrollPositionNone];
    [controller performSegueWithIdentifier:@"FinishedTask" sender:controller];
    [super touchesEnded:touches withEvent:event];
}

@end

मैं कई segues है लेकिन वे सभी एक ही नाम है: "FinishedTask"। यदि आपको यहां लचीला होने की आवश्यकता है, तो मैं एक और संपत्ति जोड़ने का सुझाव देता हूं।

ViewController इस तरह दिखता है:

// LogbookViewController.m
#import "LogbookViewController.h"
#import "TaskGuessTableCell.h"

@implementation LogbookViewController

- (void)viewDidLoad
{
    [super viewDidLoad]

    // register custom nib
    [self.tableView registerNib:[UINib nibWithNibName:@"DetailedTaskCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"DetailedTaskCell"];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    TaskGuessTableCell *cell;

    cell = [tableView dequeueReusableCellWithIdentifier:@"DetailedTaskCell"];
    cell.controller = self; // <-- the line that matters
    // if you added the seque property to the cell class, set that one here
    // cell.segue = @"TheSegueYouNeedToTrigger";
    cell.taskTitle.text  = [entry title];
    // set other outlet values etc. ...

    return cell;
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"FinishedTask"])
    {
        // do what you have to do, as usual
    }

}

@end

उसी को प्राप्त करने के लिए और अधिक सुरुचिपूर्ण तरीके हो सकते हैं - लेकिन यह काम करता है! :)


1
धन्यवाद, मैं अपनी परियोजना में इस दृष्टिकोण को लागू कर रहा हूं। आप इस विधि को ओवरराइड कर सकते हैं इसके बजाय आपको इंडेक्सपाथ प्राप्त करने और स्वयं पंक्ति का चयन करने की आवश्यकता नहीं है: - (शून्य) setSelected: (BOOL) चयनित एनिमेटेड: (BOOL) एनिमेटेड {[सुपर setSelected: एनिमेटेड: एनिमेटेड]; अगर (चयनित) [self.controller performSegueWithIdentifier: self.segue प्रेषक: स्व]; } मैंने सोचा था कि सुपर का चयन करते समय सेल का चयन किया जाएगा [सुपर छूता है: छूता है साथ: इवेंट:] ;। क्या आपको पता है कि जब यह चुना जाता है तो क्या नहीं?
द एज

9
ध्यान दें कि इस समाधान के साथ, आप हर बार एक सेल के अंदर एक स्पर्श समाप्त होने पर बहस को ट्रिगर कर रहे हैं। इसमें शामिल हैं यदि आप केवल सेल को स्क्रॉल कर रहे हैं, वास्तव में इसे चुनने की कोशिश नहीं कर रहे हैं। आपके पास -setSelected:सेल पर ओवरराइड करने से बेहतर भाग्य हो सकता है , और इससे संक्रमण होने NOपर ही सेग को ट्रिगर किया जा सकता है YES
बीजे होमर

मैं setSelected:बीजे के साथ बेहतर किस्मत रखता हूं । धन्यवाद। वास्तव में, यह एक असंगत समाधान है (यह गलत लगता है), लेकिन एक ही समय में, यह काम करता है, इसलिए मैं इसे तब तक उपयोग कर रहा हूं जब तक कि यह ठीक नहीं हो जाता (या ऐप्पल के न्यायालय में कुछ परिवर्तन)।
बेन क्राइगर

16

मुझे इसकी तलाश थी और मुझे यह जवाब रिचर्ड वेनबेल ने दिया। इससे मेरा काम बनता है।

iOS 5 में UITableView पर एक नया तरीका शामिल है: registerNib: forCellReuseIdentifier:

इसका उपयोग करने के लिए, एक निब में UITableViewCell लगाएं। इसे निब में केवल मूल वस्तु होना चाहिए।

आप अपने तालिका दृश्य को लोड करने के बाद nib को पंजीकृत कर सकते हैं, फिर जब आप dequeueReusableCellWithIdentifier: सेल आइडेंटिफायर से कॉल करते हैं, तो यह इसे nib से खींच लेगा, जैसे कि अगर आपने स्टोरीबोर्ड सेल का उपयोग किया था।


10

बीजे होमर ने एक उत्कृष्ट विवरण दिया है कि क्या चल रहा है।

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

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


10

स्विफ्ट 3

बीजे होमर ने एक उत्कृष्ट व्याख्या दी, यह मुझे अवधारणा को समझने में मदद करता है। के लिए make a custom cell reusable in storyboard, जिसका उपयोग किसी भी TableViewController में किया जा सकता है जिसे हमें mix the Storyboard and xibदृष्टिकोण करना है। मान लीजिए के रूप में हम एक सेल नाम दिया है CustomCellमें इस्तेमाल किया जा रहा है जो TableViewControllerOneऔर TableViewControllerTwo। मैं इसे चरणों में बना रहा हूं।
1. फ़ाइल> नया> फ़ाइल पर क्लिक करें> कोको टच क्लास चुनें> नेक्स्ट पर क्लिक करें> अपनी कक्षा का नाम दें (उदाहरण के लिए CustomCell)> UITableVieCell के रूप में सबक्लास चुनें> XIB फ़ाइल चेकबॉक्स बनाएं और अगला दबाएं।
2. सेल को अनुकूलित करें जैसा आप चाहते हैं और सेल के लिए विशेषता निरीक्षक में पहचानकर्ता सेट करें, यहाँ हम सेट करेंगे CellIdentifier। यह पहचानकर्ता सेल को पहचानने और पुन: उपयोग करने के लिए आपके ViewController में उपयोग किया जाएगा।
3. अब हमें बस करना हैregister this cellहमारे ViewController में viewDidLoad। किसी भी प्रारंभिक विधि की आवश्यकता नहीं है।
4. अब हम किसी भी tableView में इस कस्टम सेल का उपयोग कर सकते हैं।

TableViewControllerOne में

let reuseIdentifier = "CellIdentifier"

override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: reuseIdentifier)
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier:reuseIdentifier, for: indexPath) as! CustomCell
    return cell!
}

5

मुझे एक ही वीसी के लिए सेल को लोड करने का एक तरीका मिला, न कि सेगमेंट के लिए परीक्षण किया गया। यह एक अलग nib में सेल बनाने के लिए एक वर्कअराउंड हो सकता है

मान लीजिए कि आपके पास एक वीसी और 2 टेबल हैं और आप स्टोरीबोर्ड में एक सेल डिजाइन करना चाहते हैं और दोनों तालिकाओं में इसका उपयोग करना चाहते हैं।

(पूर्व: परिणाम के लिए तालिका के साथ एक तालिका और UISearchController के साथ एक खोज फ़ील्ड और आप उसी आइटम का उपयोग करना चाहते हैं)

जब नियंत्रक सेल के लिए पूछता है ऐसा करते हैं:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * identifier = @"CELL_ID";

    ContactsCell *cell = [self.YOURTABLEVIEW dequeueReusableCellWithIdentifier:identifier];
  // Ignore the "tableView" argument
}

और यहाँ आपके पास स्टोरीबोर्ड से अपना सेल है


मैंने यह कोशिश की और यह लगता है कि काम करने के लिए कभी भी कोशिकाओं का पुन: उपयोग नहीं किया जाता है। सिस्टम हमेशा हर बार नई कोशिकाओं का निर्माण करता है और डील करता है।
गिलराइकिलरॉय

यह वही सिफारिश है जो स्टोरीबोर्ड के साथ टेबल व्यू में एक सर्च बार को जोड़ने में पाया जा सकता है । यदि आप रुचि रखते हैं, तो वहाँ इस समाधान की अधिक गहराई से व्याख्या है (खोज के लिए tableView:cellForRowAtIndexPath:)।
सेंसफुल जूल

लेकिन यह कम पाठ है और इस सवाल का जवाब देता है
जोओ न्यून्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.