2012-11-04 12 views
9

मैं सिर्फ पहली बार के लिए UICollectionView के साथ प्रयोग करना शुरू कर दिया है। अच्छी तरह से काम करने लगता है, लेकिन इसके बारे में एक मुद्दा और एक सवाल है।UICollectionView registerCell - खाली कोशिकाओं

मैं नीचे के रूप में मेरी UICollectionView सेटअप है और आप कस्टम सेल के साथ:

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section 
{ 
    return 10; 
} 

- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView 
{ 
    return 1; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ContactCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 
    cell.nameLbl.text = @"text"; 

    return cell; 
} 

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return CGSizeMake(145, 95); 
} 

- (UIEdgeInsets)collectionView: 
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(10, 10, 10, 10); 
} 

तो यह है सब dandy, इस लाइन तथापि मैं जोड़ लिया है viewDidLoad रहे हैं:

[collectionView registerClass:[ContactCell class] forCellWithReuseIdentifier:@"Cell"]; 

इस के कारण परेशानी है और मुझे समझ में नहीं आता क्यों। जब मैं इस लाइन को सक्षम करता हूं, तो मेरी सभी कोशिकाएं खाली होती हैं। कैसे? मैं क्या खो रहा हूँ?

इसके अलावा, के रूप में मैं इसे समझ, अगर है कि रेखा पुन: प्रयोज्य कोशिकाओं में सक्षम बनाता है, कारण है कि मैं करने के लिए एक संग्रह को देखने के लिए एक तालिका दृश्य में करने के लिए नहीं होने बनाम साथ है?

किसी भी तकनीकी या व्याख्यात्मक मदद की सराहना की, धन्यवाद।

+0

कैसे आप को सेल के लिए दृश्य की स्थापना कर रहे हैं? प्रोग्रामिंग में अपने उपclass में? – jackslash

+0

मैंने इसे अपने स्टोरीबोर्ड में स्थापित किया है। मेरे पास एक एकल सेल के साथ एक UICollectionView है, उस सेल में इसकी पहचानकर्ता, कस्टम क्लास हुक अप और लेबल है। –

उत्तर

24

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

the documentation से:

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

आप कोशिकाओं स्टोरीबोर्ड आप या तो अपने इंटरफेस सेटअप प्रोग्राम के रूप में कर सकते हैं की बाहर डिजाइन या एक अलग xib में एक सेल की स्थापना की और उसके बाद कॉल करने के लिए चाहते हैं

- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier

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

+0

तो अपने कह मैं केवल नेत्रहीन एक xib से मेरे सेल डिजाइन और विधि सुझाव का उपयोग कर सकते हैं, अन्यथा मैं यह प्रोग्राम के रूप में बनाना चाहिए? –

+1

या आप संग्रह दृश्य में प्रोटोटाइप कोशिकाओं को जोड़कर स्टोरीबोर्ड में उन्हें डिज़ाइन कर सकते हैं। कहानी बोर्ड पंजीकृत करता है कि आपके लिए स्वचालित रूप से सेल और पुन: उपयोग चालू है। – jackslash

+0

Thats क्यों यह खाली हो जाता है जब आप 'registerClass फोन:', आपको आपके द्वारा स्टोरीबोर्ड में किया था unsetting रहे हैं। यह भी क्यों लाइन के बिना काम करता है।संग्रह दृश्य कुछ प्रकार के पुन: प्रयोज्य सेल के बिना काम नहीं करेंगे – jackslash

0

निकालें

[self.collectionview registerClass:[NewCell class] forCellWithReuseIdentifier:@"Cell"]; 

स्टोरीबोर्ड हम इस लाइन की जरूरत नहीं है के लिए

+0

हां जवाब है √ –

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