自定義UICollectionView : received layout attributes for a cell with an index path that does not exist

最近用UICollectionView做表格控件,自定義UICollectionViewLayout的遇到了一個崩潰。

*** Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 'UICollectionView received 
layout attributes for a cell with an index path that does not exist: 
<NSIndexPath: 0xc000000000000116> {length = 2, path = 1 - 0}'

在UICollectionViewLayout的重載接口中我們需要定義

-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{

NSMutableArray<UICollectionViewLayoutAttributes *> *layoutAttributes = [NSMutableArray array];
/*計算需要展示的cell*/
/*
UICollectionViewLayoutAttributes
@property(nonatomic, strong) NSIndexPath *indexPath;
*/
return  layoutAttributes;
}

在UICollectionView的delegate接口我們需要實現(xiàn)

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    // return  SectionsNum
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    // return  numberOfSection
}

崩潰的原因:

layoutAttributesForElementsInRect返回的UICollectionViewLayoutAttributes數(shù)組有indexPath沒有被 [NSIndexPath indexPathForRow:numberOfSection]覆蓋。
換而言之
SectionsNum不小于layoutAttributes中任何一個UICollectionViewLayoutAttributes的indexPath.section,
numberOfSection不小于layoutAttributes中任何一個UICollectionViewLayoutAttributes的indexPath.item,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容