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 中未调用委托