2015-02-05 6 views
6

मैं कई प्रकार के कस्टम UITableViewCell उप-वर्गों (एक ही आईबीओटलेट्स - एक ही रूप - विभिन्न विधियों और तर्क) के लिए एक XIB फ़ाइल का उपयोग करने का प्रयास कर रहा हूं।एकाधिक UITableViewCell सबक्लास के लिए एक XIB

मैं यह कैसे कर सकता हूं?

+0

यू एकल tablview का उपयोग कर रहे हैं? –

उत्तर

2

कड़ाई से बोलते हुए, ढांचा एक xib से अपने फ़ाइल स्वामी को सख्त बाध्यकारी लागू नहीं करता है।

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCustomCell" owner:nil options:nil]; 
EXFirstCustomCell *firstCell = (EXFirstCustomCell*)[nibContents objectAtIndex:0]; 
firstCell.firstView = [firstCell.contentView viewWithTag:VIEW_TAG]; 
firstCell.button = [firstCell.contentView viewWithTag:BUTTON_TAG]; 

अपने व्यापार तर्क के आधार पर, आप अपने कस्टम UITableViewCell वर्ग सूट करने के लिए [nibContents objectAtIndex:0]; का परिणाम डाल सकता: आप एक निब लोड करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं।

# 1 संपादित करें:

Typecasting आम तौर पर एक बुरा विचार है, क्योंकि firstCell अभी भी वर्ग UITableViewCell की तरह हो जाएगा। एक अच्छा विचार आपके स्वयं के कन्स्ट्रक्टर को बनाना होगा, nibContents को तर्क के रूप में पास करें और वहां अपना व्यू असाइनमेंट करें।

  1. एक स्वतंत्र xib दृश्य बनाएँ और वहाँ अपने सेल डिजाइन:

    # संपादित 2

    मैं प्रयोग का एक सा था और यहाँ कैसे मैं इस काम मिल गया है। इसे एक दृश्य होना है। आप यहां क्या कर रहे हैं यह है कि आप परिभाषित कर रहे हैं कि contentView कैसे होगा।

  2. xib से सभी विचार लोड करें। NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCommonContentView" owner:nil options:nil];

  3. तो जैसे अपने कस्टम सेल के एक निर्माता बनाएँ:

    -initWithNibContents:(NSArray*)nibContents { 
        self = [super init] 
        if(self) { 
         self.contentView = [nibContents objectAtIndex:0]; 
         self.button = [self.contentView viewWithTag:BUTTON_TAG]; 
         self.view = [self.contentView viewWithTag:VIEW_TAG]; 
        } 
    }