Удаление пустого места, если заголовок раздела скрыт в UICollectionView
У меня есть два раздела в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:
метод сбой для других тоже. Другие ответы, предлагающие удалить этот метод.
Но я хочу показать заголовок раздела только для определенных разделов. Как добиться этого возвращающегося представления только для одного раздела? Благодарю. Любая помощь будет оценена.
РЕДАКТИРОВАТЬ:
Как сказал @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;
}
Я даже попытался установить фрейм для sectionHeader, как сказал @san. Но не повезло. тот же результат.