I'm getting the error ...
*** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:], /SourceCache/UIKit/UIKit-2372/UICollectionView.m:2249
When trying to display a UICollectionView.
The lines causing it are...
static NSString *CellIdentifier = @"Cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
Error happening on the dequeue.
There are no other errors so I'm struggling to know where to begin with this.
Can anyone shed light on this?
You need to register like below:
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MY_CELL"];
Been reading the docs (should possibly have done this first :) )
Anyway, the collectionView I am using is within a separate xib file (not a storyboard) and from the docs...
Important: You must register a class or nib file using the
registerClass:forCellWithReuseIdentifier: or
registerNib:forCellWithReuseIdentifier: method before calling this method.
Thanks
Make sure that if you use the registerNib:
method:
UINib *nibH = [UINib nibWithNibName:HEADER_ID bundle:nil];
[collectionView registerNib:nibH
forSupplementaryViewOfKind:UICollectionElementKindSectionHeader
withReuseIdentifier:HEADER_ID];
that ALSO in the nib file, when you select the top-level collection reusable view, use the attributes inspector, and make sure the Identifier
is set to the same value you are passing in to the withReuseIdentifier:
parameter.
I had the same problem. Here's how I solved it.
Move
[self.pictureCollectionView registerNib:[UINib nibWithNibName: bundle:nil] forCellWithReuseIdentifier:reuseID]
to be in - (void)viewDidLoad
,
rather than method - (void)awakeFromNib
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With