7

मैं एक सामान्य रूप से प्रस्तुत दृश्य नियंत्रक के अंदर प्रदर्शित करने के लिए UICollectionView प्राप्त करने का प्रयास कर रहा हूं। एप्लिकेशन आईपैड आईओएस 7.कोशिकाओं को प्रदर्शित करने के लिए UICollectionView नहीं मिल सकता

मैं उपवर्ग UIViewController की (एक निब के साथ) इस तरह बना लिया है और कहा कि इसके लिए है:

MyViewController *controller = [[MyViewController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 
navController.modalPresentationStyle = UIModalPresentationFullScreen; 
navController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

[self presentViewController:navController animated:YES completion:nil]; 

यह दृश्य नियंत्रक प्रतिनिधि और डेटा स्रोत मेरी UICollectionView के लिए हो रहा है इसलिए मैंने शीर्ष पर UICollectionViewDataSource और UICollectionViewDelegate जोड़ा है।

मैं निब में एक UICollectionView रख दिया और MyViewController के एक आउटलेट जोड़ दिया है:

self.collectionViewController.dataSource = self; 
self.collectionViewController.delegate = self; 

मैं भी जोड़ दिया है:

@property (strong, nonatomic) IBOutlet MyCollectionView *collectionViewController; 

मैं MyViewController में viewDidLoad में यह जोड़ दिया है MyViewController के लिए निम्न:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
    NSLog(@"Items in section: %d", itemsArray.count); // returns correct amount 

    return itemsArray.count; 
} 


- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"cellForItemAtIndexPath %@", indexPath); // returns as expected 

    static NSString *identifier = @"MyCell"; 

    [self.collectionViewController registerClass:[MyCollectionCell class] forCellWithReuseIdentifier:identifier]; 

    MyCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 

    UIImageView *myImageView = (UIImageView *)[cell viewWithTag:100]; 
    myImageView.image = [UIImage imageNamed:[itemsArray objectAtIndex:indexPath.row]]; 

    return cell; 
} 

मैं भी UICollection का एक उपवर्ग सेट कर लेते हैं MyCell पर पहचानकर्ता के साथ ViewCell और टैग 100 के साथ UIImageView में जोड़ा गया।

जब भी मैं इस दृश्य नियंत्रक को लाता हूं तो मुझे नेविगेशन बार अपेक्षित के रूप में मिल रहा है, लेकिन UICollection दृश्य मैंने अपने निब में जोड़ा है कहीं नहीं देखा जाना है। मैं जो देख रहा हूं वह काला है जहां संग्रह दृश्य होना चाहिए। यदि मैं MyCollectionView के पृष्ठभूमि रंग को डिफ़ॉल्ट से सफेद में बदलता हूं, तो मुझे सफेद दिखाई देता है जहां संग्रह दृश्य होना चाहिए। ऐसा लगता है कि MyCollectionView ला रहा है, लेकिन कोई भी सेल नहीं दिखा रहा है।

+0

[क्या आपने एपकोडा ट्यूटोरियल का पालन किया था?] (Http://www.appcoda.com/ios-collection-view-tutorial/) –

उत्तर

20

यदि आप अपने संग्रह दृश्य और अपने डेटा को लिंक करते हैं और अपने xib फ़ाइल में प्रतिनिधि करते हैं, तो आपको इसे अपने कोड पर सेट करने की आवश्यकता नहीं है।

बाद, आप अपने UICollectionViewCell रजिस्टर करने की आवश्यकता:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Register Nib 
    [self.collectionView registerNib:[UINib nibWithNibName:CollectionViewCell_XIB bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:CollectionViewCell_ID]; 
} 

CollectionViewCell_XIB CollectionViewCell_ID अपने सेल

की आईडी है अपने सेल xib का नाम है और आप cellForItemAtIndexPath इस तरह लागू करने की आवश्यकता:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CollectionViewCell *cell = (CollectionViewCell *)[self.collectionView dequeueReusableCellWithReuseIdentifier:CollectionViewCell_ID forIndexPath:indexPath]; 

    // Configure cell with data 
    UIImageView *myImageView = (UIImageView *)[cell viewWithTag:100]; 
    myImageView.image = [UIImage imageNamed:[itemsArray objectAtIndex:indexPath.row]]; 

    // Return the cell 
    return cell; 
} 
+1

पूरी तरह से कमाल, महोदय। धन्यवाद! – beev

+3

आपका स्वागत है;) +1 जोड़ने में संकोच नहीं करते: पी –

24

ब्याज का एक अन्य बिंदु यह है कि यदि आप सेल के पहचानकर्ता को सेट करते हैं निब या स्टोरीबोर्ड में, संग्रह दृश्य नियंत्रक में nib/class को पंजीकृत न करें। एक या दूसरे करो, लेकिन दोनों नहीं।

+4

कमाल, मैं एक ही समस्या में भाग गया और यह हल हो गया। –

+3

यह मेरे लिए समस्या थी। Thx –

+0

यह !!!! ओमजी मैं इसे विश्वास नहीं कर सकता – SteBra

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