最终结果是在一个视图控制器上有2个集合视图。从不同的来源拉动,一个应该水平滚动,而另一个垂直滚动。
请告知如何以编程方式实现此目的。
答案 0 :(得分:24)
之前我没有使用UICollectionView
,但是当它继承自UIScrollView时,我有机会与UITableView
非常相似。
使用一个CollectionView时,我假设您必须设置collectionView.delegate = self;
和collectionView.dataSource = self
,并在.h
文件中确保您的班级正在使用<UICollectionViewDelegate, UICollectionViewDataSource>
或类似的东西。当您将collectionView的委托设置为您自己的视图(self
)时,您确保为delegView提供的数据来自您自己的类,在delegate-methods中。我相信你已经知道了,因为单一的collectionView应该非常简单。
当您使用两个collectionView时,您必须设置
collection1.delegate = self;
collection2.delegate = self;
collection1.dataSource = self;
collection2.dataSource = self;
这将使这两个collectionViews都调用委托方法。
例如,委托方法-collectionView:cellForItemAtIndexPath:
将被调用两次。一次用于collection1,一次用于collection2。
为了确保他们获得发送给他们的正确数据,您应该在每个委托和dataSource方法的开头创建一个简单的检查,如下所示:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
if(collectionView == collection1)
{
//return cell for collection1
}
else
{
//return cell for collection2
}
}
在这里,我正在检查collectionView
是否等于collection1
或collection2
。委托方法提供collectionView
作为它调用方法的UICollectionView,并且必须是两者中的任何一个。如果你为collectionView
调用了一个collectionView,这看起来很可疑,所以一定要在逻辑上命名它们。