最终结果是在一个视图控制器上有 2 个集合视图。从不同来源拉动以及一个应该水平滚动,而另一个垂直滚动。
请告知如何以编程方式实现这一目标。
最终结果是在一个视图控制器上有 2 个集合视图。从不同来源拉动以及一个应该水平滚动,而另一个垂直滚动。
请告知如何以编程方式实现这一目标。
我以前没用过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;
反过来,这将使得两个 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
,因此请确保按逻辑命名它们。