UICollectionView's cell disappearing
ios, uicollectionview, uicollectionviewcell, xcode
Solution
So, what did work?
1) Subclass `UICollectionViewFlowLayout`.
2) Set the flowLayout of my `UICollectionView` to my new subclass.
3) On the init method of the `UICollectionViewFlowLayout` subclass, set the orientation you want:
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
In my case it is Horizontal.
4) The important part:
-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
return YES;
}
At this moment, I should theorise a bit, but honestly I don't have a clue.
Problem
What's happening Currently I have an application that uses two `UICollectionViews` inside a `UITableView`. This way I create a Pulse News look like application. My problem with this is that sometimes the 6th and 11th row disappears completely, leaving a blank space where it should be the cell. I wouldn't actually mind, if all the cells were like this (and this way I could assume that I wasn't doing things correctly), but the thing is, is just happening with those specific ones. My theory The 6th and 11th rows are the ones that appears when I start scrolling, so by default I am able to see 5 cells, and when I do the first horizontal scrolling the 6th comes up (blank space sometimes). What I have The only thing I am doing at the moment is this: ``` [self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER]; ``` On the `viewDidLoad`. And on the creation of the cell: ``` - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath]; NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]]; [cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController]; return cell; } ``` So on my understating nothing fancy going on here. I though there was something wrong on the data source (a dummy JSON file), but sometimes it works ok and the cell shows, so I guess from that part is ok. So my "question": Does anyone knows what's going on? I don't really like to say that it's a bug from iOS, but I can't think of anything else. Edit 1.0 The amazing part is that this method ``` -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath; ``` Is going from `indexPath` [0,4] to [0,6] without calculating the [0,5]. First time I actually see this happening in iOS. Edit 2.0 I have switched the way I am creating the cells, and instead of dequeuing I am using the old way: ``` NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil]; MyCell *cell = (MyCell *)[nib objectAtIndex:0]; ``` Still the same sad result.