UICollectionReusableView 不显示

Posted

技术标签:

【中文标题】UICollectionReusableView 不显示【英文标题】:UICollectionReusableView not showing 【发布时间】:2017-07-20 15:09:37 【问题描述】:

我已将<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout> 添加到我的收藏视图并设置我的UICollectionView 如下。

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
[self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerReuseIdentifier];

我还添加了必要的方法。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section 
    return CGSizeMake(self.view.frame.size.width, 44.0f);


- (UICollectionReusableView *)supplementaryViewForElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath 
    NSLog(@"supplementaryViewForElementKind called");
    if ([elementKind isEqualToString:UICollectionElementKindSectionHeader]) 
        UICollectionReusableView *header = [self.collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader
                                                                               withReuseIdentifier:headerReuseIdentifier
                                                                                      forIndexPath:indexPath];
        header.backgroundColor = [UIColor redColor];
        return header;
    

    return nil;

但是,supplementaryViewForElementKind 永远不会被调用。有什么想法吗?

【问题讨论】:

你在 viewdidload 中添加了 self.collectionView.delegate = self 吗? 是的,对不起。我忘了把它添加到问题中。 你在实现uicollectionviewdelegate中注册到delegate了吗? @StefanSzekeres 是的,我做到了。代表就是我注册到<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>UICollectionViewController ***.com/a/18174257/1889814 【参考方案1】:

如果您在 Interface Builder 中添加了标题视图并且已经分配了类,那么您应该删除代码中的 registerClass 调用。它应该显示出来。中断您的委托方法以查看它被调用。

【讨论】:

以上是关于UICollectionReusableView 不显示的主要内容,如果未能解决你的问题,请参考以下文章

Swift - UICollectionReusableView 的子视图不适合宽度

未显示自定义 UICollectionReusableView 元素

显示部分标题 UICollectionReusableView

UICollectionReusableView 中未调用委托

协议和委托不适用于 UICollectionReusableView

UICollectionReusableView 中的标签始终为零