我在UICollectionView
. 我只想在UICollectionView
第 1 节中显示节标题。不在第 0 部分。
所以我尝试nil
在viewForSupplementaryElementOfKind
: 方法中section == 0
返回并为section == 1
.
它崩溃并显示以下错误:
Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes]:
这是我的补充视图代码。
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *sectionHeader = nil;
if (kind == UICollectionElementKindSectionHeader && indexPath.section == 1) {
sectionHeader = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"EventSectionHeader" forIndexPath:indexPath];
sectionHeader.layer.borderWidth = .5f;
sectionHeader.layer.borderColor = [UIColor colorWithRed:221.0 / 255.0 green:223.0 / 255.0 blue:220.0 / 255.0 alpha:1.0].CGColor;
}
return sectionHeader;
}
我发现在viewForSupplementaryElementOfKind:
方法中返回 nil 也会导致其他人崩溃。其他答案建议删除该方法。
但我只想显示特定部分的部分标题。如何只为一个部分实现返回视图?谢谢。任何帮助,将不胜感激。
编辑:
正如@san 所说,我已经更新了代码以隐藏部分标题。有用。它隐藏了标题。但是我仍然在节标题的位置看到空白。预期结果是,如果部分标题被隐藏,则应该没有空间。
更新代码:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *sectionHeader = nil;
if (kind == UICollectionElementKindSectionHeader) {
sectionHeader = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"EventSectionHeader" forIndexPath:indexPath];
sectionHeader.layer.borderWidth = .5f;
sectionHeader.layer.borderColor = [UIColor colorWithRed:221.0 / 255.0 green:223.0 / 255.0 blue:220.0 / 255.0 alpha:1.0].CGColor;
if (indexPath.section == 0) {
sectionHeader.hidden = YES;
}else {
sectionHeader.hidden = NO;
}
}
return sectionHeader;
}
我什至尝试像@san 所说的那样设置 sectionHeader 的框架。但没有运气。同样的结果。