同一个ViewController中的多个UICollectionView

时间:2014-01-09 11:36:07

标签: ios uicollectionview uicollectionviewlayout

我使用自定义UICollectionView布局来获得不同大小的单元格,而且我无法在其中添加部分。

在同一个UICollectionView中使用多个UIViewController是不是一个好主意?有什么建议吗?

2 个答案:

答案 0 :(得分:7)

很简单

为每个UICollectionView代理

- (NSUInteger)maximumNumberOfColumnsForCollectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout

- (CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout
heightForItemAtIndexPath:(NSIndexPath*)indexPath

- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
 cellForItemAtIndexPath:(NSIndexPath*)indexPath
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section`
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView`

在里面写条件:

    if (collectionView == myCollectionView1)
    {
    // do this 
    }
    else if (collectionView == myCollectionView2)
    {
    // do this 
    }

例如在

中说
- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section 
{
    if (collectionView == myCollectionView1)
    {
     return 12;
    }
    else if (collectionView == myCollectionView2)
    {
     return 7; 
    }
    return 0;
}

答案 1 :(得分:1)

使用Tag Property区分一个View Controller中的多个UICollectionView或UITableView。

firstCollectionView.tag = 1;
secondCollectionView.tag = 2;
and so on ...

现在,在委托方法中使用if来检查UICollectionView

 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
  cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
  if(collectionView.tag == 1)
  {
    //cell for first UICollectionView or CollectionView with tag equal to 1
  }
  else if(collection.tag == 2)
  {
    //cell for second UICollectionView or CollectionView with tag equal to 2
  }
}

在其他委托方法中使用相同的技术。