У меня два раздела в 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;
}
Я обнаружил, что возвращение nil в viewForSupplementaryElementOfKind:
метод сбой для других тоже. Другие ответы, предлагающие удалить этот метод.
Но я хочу показать заголовок раздела только для определенных разделов. Как достичь этого возвращающегося представления только для одного раздела? Благодарю. Любая помощь будет оценена.
EDIT:
Как сказал @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. Но не повезло. тот же результат.