2016-02-01 5 views
5

मैं एकाधिक UITableViewCell सबक्लास के बीच कैसे साझा कर सकता हूं?एकाधिक UITableViewCell उपclasses एक ही xib का उपयोग कर?

उनके सभी में एक ही दृश्य इंटरफ़ेस है इसलिए मैं सेल क्लास को बदलने के लिए xib एकाधिक बार डुप्लिकेट नहीं करना चाहता हूं। मेरी ChildCell

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView registerNib:[UINib nibWithNibName:@"BaseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"BaseCell"]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BaseCell *baseCell = [tableView dequeueReusableCellWithIdentifier:@"BaseCell" forIndexPath:indexPath]; 

    ... 

क्या मैं यहाँ की जरूरत के बजाय का एक उदाहरण है - जो BaseCell का एक उपवर्ग है। कोई विचार?

+0

कक्षा की संरचना बदलना बेहतर दृष्टिकोण हो सकता है। सेल के लिए राज्य जोड़ना और सेल की वर्तमान स्थिति के अनुसार प्रतिक्रिया देना एक और विकल्प है। – meth

उत्तर

1

विरासत की बजाय संरचना का उपयोग करें। अपने BaseCell वर्ग और उसके सेल के बीच 1-1 रिश्ते को रखें, एक क्रियान्वयन ऑब्जेक्ट के लिए एक संपत्ति जोड़ें जो आप बनाते हैं और सेल ऑब्जेक्ट में इसे हटाने के बाद जोड़ते हैं।

1

अब एकाधिक सेल के लिए xib का उपयोग करने का कोई तरीका नहीं है।

लेकिन आप xib का हिस्सा अलग कर सकते हैं, जो कि सभी सेल उपयोग करेंगे।

और प्रत्येक सेल में आप इस कक्षा सबव्यू में एक सबव्यू सेट करेंगे, और अब आप इस सेल को सभी सेल के लिए पुन: उपयोग कर सकते हैं।

आप इस उदाहरण के लिए मेरी छवि देख सकते हैं:

पहले सेल:

enter image description here

दूसरा सेल: enter image description here

और subview दो सेल उपयोग:

enter image description here

अब आपको डुप्लिकेट xib की आवश्यकता नहीं है और यूआई के इस हिस्से का पुन: उपयोग कर सकते हैं।

संबंधित मुद्दे