多个UICollectionView在一个控制器中

我有一个视图与两个UICollectionViews设置。 每个视图都有一个以不同大小支持的数组。 collection1由array1支持,而collection2由array2支持。 问题是,从numberOfItemsInSection返回collection1的数量正被应用于两个集合视图。

例如,如果array1的大小为4,array2的大小为5,那么这两个集合将显示4个元素。 如果array1的大小是5,array2的大小是4,那么当我滚动collection2的时候,它会调用cellForItemAtIndexPath,其collectionIndex为5,我得到一个NSRangeException。

我怎样才能使每个collectionView使用它自己的大小?

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section; { if(view == self.colleciton1){ return self.array1.count; } else if (view == self.collection2){ return self.array2.count; } return 0; } - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; { if(cv == self.collection1){ CharacterCell *cell = [cv dequeueReusableCellWithReuseIdentifier:FIRST_CELL_IDENTIFIER forIndexPath:indexPath]; cell.label.text = self.array1[indexPath.item]; return cell; } else if (cv == self.collection2){ EpisodeCell *cell = [cv dequeueReusableCellWithReuseIdentifier:SECOND_CELL_IDENTIFIER forIndexPath:indexPath]; cell.label.text = self.array2[indexPath.item]; return cell; } return nil; } 

我已经包括一个项目说明问题的git回购。

git@github.com:civatrix / MultipleCollectionViews.git

问题是我为每个集合使用相同的布局对象。 回想起来,这是有道理的,但你必须确保你为每个collectionView创build不同的布局。

也许它会更容易使用ContainerViews并为每个UICollectionView有两个单独的UICollectionView控制器

你有什么应该工作。 是self.colleciton1和self.collection2 IBOutlets? 如果是这样,你可以仔细检查他们是否正确连接?