Allow A Header View for Only Certain Sections Using an iOS UICollectionView
ios, objective-c, uicollectionreusableview, uicollectionview
Solution
Go ahead and return a header for each section and then set the size of the section header to have a size of zero in this UICollectionViewDelegate function.
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return CGSizeZero;
}else {
return CGSizeMake(self.collectionView.bounds.size.width, desiredHeight);
}
}
Problem
The code below displays my header view correctly, but for each of the sections in the UICollectionView: ``` -(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { UICollectionReusableView * headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"SectionHeaderCollectionReusableView" forIndexPath:indexPath]; switch (indexPath.section) { case Section_One: return headerView; case Section_Two: return headerView; case Section_Three: return headerView; case Section_Four: return headerView; case Section_Five: return headerView; default: return headerView; } } ``` What I would like to do instead, is not display a header view for 'Section_One' or 'Section_Two', but returning 'nil' results in an 'NSInternalInconsistencyException': ``` -(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { UICollectionReusableView * headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"SectionHeaderCollectionReusableView" forIndexPath:indexPath]; switch (indexPath.section) { case Section_One: return nil; case Section_Two: return nil; case Section_Three: return headerView; case Section_Four: return headerView; case Section_Five: return headerView; default: return nil; } } ``` What do I need to do to display a header view for only certain sections?