UICollectionView recibió attributes de layout para una celda con una ruta de índice que no existe

He usado la vista UICollection para mostrar elementos en el layout de la grilla.

Para la fuente de datos, uso una matriz de 5 * 5 dimensiones.

Y también estoy devolviendo 5 para numberOfItems en la sección y 5 para numberOfSections.

Entonces también mi aplicación se bloquea con el siguiente error:

'UICollectionView recibió attributes de layout para una celda con una ruta de índice que no existe: {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); } /////////////////////// 

¿Alguien puede resolver este problema? Gracias por adelantado.

MultipleLineLayout se escribió originalmente para un desplazamiento infinito, por lo que hubo un problema con esa implementación para su uso. Debe tener un aspecto como este,

 -(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; } 

En caso de que otros encuentren esta pregunta con Google, recibí el mismo error con una ruta de índice muy interesante:

'NSInternalInconsistencyException', razón: 'UICollectionView recibió attributes de layout para una celda con una ruta de índice que no existe: {length = 2, path = 0 – 0}'

Simplemente había olvidado conectar el origen de datos de la vista de colección y delegar en el controller de vista en Interface Builder. Dios