Running my app in a device with iOS 10 I get this error:
UICollectionView received layout attributes for a cell with an index path that does not exist
In iOS 8 and 9 works fine. I have been researching and I have found that is something related to invalidate the collection view layout. I tried to implement that solution with no success, so I would like to ask for direct help. This is my hierarchy view:
->Table view
->Each cell of table is a custom collection view [GitHub Repo][1]
->Each item of collection view has another collection view
What I have tried is to insert
[self.collectionView.collectionViewLayout invalidateLayout];
In the
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
of both collection views.
Also I have tried to invalidate layout before doing a reload data, does not work...
Could anyone give me some directions to take?
After spending two days of time, the below code solved the issue. Before loading a collectionview write the below code.
Then the crash will be resolved, but you will find issue in collectionview cells, as the cells are compressed or not as per your design. Then just a line of code after scrolldirection line
With the above line of code, you can adjust you collectionview cell layout.
I hope it will help someone.
If you want to keep your scroll position and fix the crash you can use this:
I managed to solve this by recreating the
collectionViewLayout
before callingreloadData()
The issue was probably related to me having a separate instance for the
dataSource
(i.e. not the view controller holding the collectionView), and when swapping datasource, the crash could appear.I also faced this issue with 2 collectionViews in the same view because I added the same UICollectionViewFlowLayout in both collections :
Of course it crashes on reload data if collectionView1 Data change. If this could help someone.
When you have custom layout, remember to clear cache (UICollectionViewLayoutAttributes) while overriding prepare func
Resetting
UICollectionView
's layout solved the problem for me: