我没用过UICollectionView
之前,但由于它继承自 UIScrollView,我冒着风险,它与UITableView
.
当使用一个 CollectionView 时,我假设你必须设置collectionView.delegate = self;
and collectionView.dataSource = self
,并且在.h
-file,确保你的班级正在使用<UICollectionViewDelegate, UICollectionViewDataSource>
或类似的东西。当您将 collectionView 的委托设置为您自己的视图时(self
),您要确保为 collectionView 提供的数据来自您自己的类(在委托方法中)。我相信您已经知道这一点,因为对于一个单一的 collectionView 来说这应该是非常简单的。
当你使用两个collectionViews时,你必须设置
collection1.delegate = self;
collection2.delegate = self;
collection1.dataSource = self;
collection2.dataSource = self;
这将使两个 CollectionView 都调用委托方法。
例如,委托方法-collectionView:cellForItemAtIndexPath:
将被调用两次。一次用于集合 1,一次用于集合 2。
为了确保他们收到发送给他们的正确数据,您应该在每个委托和 dataSource 方法的开头创建一个简单的检查,如下所示:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
if(collectionView == collection1)
{
//return cell for collection1
}
else
{
//return cell for collection2
}
}
在这里,我正在检查是否collectionView
等于collection1
or collection2
。委托方法提供collectionView
作为 UICollectionView,它正在调用方法,并且必须是两者之一。如果您调用了其中一个集合视图,这可能看起来很可疑collectionView
不过,所以一定要按逻辑命名它们。