UICollectionView收到一个索引path不存在的单元格的布局属性

我已经使用UICollection视图来显示网格布局中的项目。

对于数据源,我使用5 * 5维数组。

而且我在numberOfItems中返回5,在numberOfSections中返回5。

然后也是我的应用程序崩溃与以下错误:

'UICollectionView接收到索引path不存在的单元的布局属性:{length = 2,path = 0 – 5}'

//////===viewcontroller.m==/////// - (void)viewDidLoad { self.theData = @[@[@"1",@"2",@"3",@"4",@"5"], @[@"6",@"7",@"8",@"9",@"10"],@[@"11",@"12",@"13",@"14",@"15"],@[@"16",@"17",@"18",@"19",@"20"],@[@"21",@"22",@"23",@"24",@"25"]]; MultpleLineLayout *layout = [[MultpleLineLayout alloc] init]; self.collectionView.collectionViewLayout = layout; self.collectionView.showsHorizontalScrollIndicator = NO; self.collectionView.showsVerticalScrollIndicator = NO; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; self.view.backgroundColor = [UIColor blackColor]; [self.collectionView registerClass:[DataCell class] forCellWithReuseIdentifier:@"DataCell"]; [self.collectionView reloadData]; } - (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section { return 5; } - (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView { return 5; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { DataCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DataCell" forIndexPath:indexPath]; cell.label.text = self.theData[indexPath.section ][indexPath.row]; return cell; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { // UICollectionViewCell *item = [collectionView cellForItemAtIndexPath:indexPath]; NSLog(@"%@",indexPath); } /////////////////////// 

有谁能解决这个问题吗? 提前致谢。

MultipleLineLayout最初是为无限滚动而编写的,所以在实现时遇到了问题。 它应该看起来像这样,

 -(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect { NSMutableArray* attributes = [NSMutableArray array]; for(NSInteger i=0 ; i < self.collectionView.numberOfSections; i++) { for (NSInteger j=0 ; j < [self.collectionView numberOfItemsInSection:i]; j++) { NSIndexPath* indexPath = [NSIndexPath indexPathForItem:j inSection:i]; [attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]]; } } return attributes; } 

以防其他人发现这个问题与谷歌 – 我收到了一个非常有趣的索引path相同的错误:

'NSInternalInconsistencyException',原因:'UICollectionView收到一个索引path不存在的单元格的布局属性:{长度= 2,path= 0 – 0}'

我简直忘记了将集合视图的数据源和委托连接到Interface Builder中的视图控制器。 D'哦!