9

最终结果是在一个视图控制器上有 2 个集合视图。从不同来源拉动以及一个应该水平滚动,而另一个垂直滚动。

请告知如何以编程方式实现这一目标。

4

1 回答 1

24

我以前没用过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等于collection1collection2。委托方法collectionView作为它调用方法的 UICollectionView 提供,并且必须是两者之一。但是,如果您调用了其中一个 collectionView,这可能看起来很可疑collectionView,因此请确保按逻辑命名它们。

于 2013-08-22T03:41:23.993 回答