UICollectionView页脚

时间:2013-07-26 10:05:08

标签: ios objective-c uicollectionview

我正在尝试将页脚添加到UICollectionView。

以下是我的代码,

通过IB

添加UICollectionView

在viewDidLoad中我注册了页脚,

[mCollectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer"];

并实施以下方法

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView   viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    UICollectionReusableView *reusableview = nil;

    if (kind == UICollectionElementKindSectionFooter) {
      UICollectionReusableView *headerView = [mCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"footer" forIndexPath:indexPath];

      [headerView addSubview:mFooterView];
      reusableview = headerView;
   }
   return reusableview;
}

但是我的应用程序一直在崩溃,下面是日志,

  

***断言失败 - [UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:],/ SourceCache / UIKit / UIKit-2380.17 / UICollectionView.m:2249

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:13)

在您的代码中为什么要对标题视图进行dequeing并向其添加页脚?

此方法的正常实现是:

- (UICollectionReusableView *)collectionView:(UICollectionView *)theCollectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)theIndexPath 
{

   UICollectionReusableView *theView;

   if(kind == UICollectionElementKindSectionHeader)
   {
      theView = [theCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:theIndexPath];
   } else {
      theView = [theCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer" forIndexPath:theIndexPath];
   }

   return theView;
}

答案 1 :(得分:0)

对于Swift 4

 override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        var myView = UICollectionReusableView()
        if kind == UICollectionView.elementKindSectionHeader {
            myView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: myHeader, for: indexPath)
        } else {
            myView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: myFooter, for: indexPath)
        }
            return myView
        }