Ios 如何在一个Viewcontroller上添加两个CollectionView?

Ios 如何在一个Viewcontroller上添加两个CollectionView?,ios,uiviewcontroller,uicollectionview,Ios,Uiviewcontroller,Uicollectionview,最终结果是在一个视图控制器上有两个集合视图。无论是从不同来源拉动,还是从一个来源拉动,都应水平滚动,而另一个应垂直滚动 请就如何通过程序实现这一目标提出建议 我以前没有使用过UICollectionView,但由于它继承了UIScrollView,所以我认为它与UITableView非常相似 当使用一个CollectionView时,我假设您必须设置CollectionView.delegate=self和collectionView.dataSource=self,并在.h-文件中,确保您的类

最终结果是在一个视图控制器上有两个集合视图。无论是从不同来源拉动,还是从一个来源拉动,都应水平滚动,而另一个应垂直滚动


请就如何通过程序实现这一目标提出建议

我以前没有使用过
UICollectionView
,但由于它继承了UIScrollView,所以我认为它与
UITableView
非常相似

当使用一个CollectionView时,我假设您必须设置
CollectionView.delegate=self
collectionView.dataSource=self
,并在
.h
-文件中,确保您的类正在使用
或类似的内容。当您将collectionView的委托设置为自己的视图(
self
)时,您要确保为collectionView提供的数据来自委托方法中自己的类。我相信你已经知道这一点,因为这应该是一个单一的collectionView非常直接

使用两个CollectionView时,必须设置

collection1.delegate = self;
collection2.delegate = self;
collection1.dataSource = self;
collection2.dataSource = self;
这样,两个CollectionView都将调用委托方法。 例如,委托方法
-collectionView:cellForItemAtIndexPath:
将被调用两次。一次用于收集1,一次用于收集2

为了确保他们获得发送给他们的正确数据,您应该在每个委托和数据源方法的开头创建一个简单的检查,如下所示:

- (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,这可能看起来很可疑,因此请确保按逻辑命名它们。

您可能希望将
if(collectionView==collection1)
更改为
if([collectionView isEqual:collection1])
以正确测试是否相等。否,==正确(您正在测试两个指针是否指向同一事物)