Добавить панель поиска в заголовок в виде коллекции с пользовательским макетом потока

Я пытаюсь добавить панель поиска в качестве заголовка в пользовательский класс макета потока.

Я знаю, как добавить его в раскадровку, если макет потока не является пользовательским, просто отметив поле заголовка раздела, но как только я использую пользовательский класс, эта опция больше не доступна.

В основном у меня возникают проблемы с концептуализацией атрибутов макета и способов их реализации. Кроме того, я не уверен, стоит ли мне помещать методы в мой источник данных, контроллер представления или подкласс макета потока, поэтому, пожалуйста, будьте конкретны с ними.

В учебнике по Рэю Вендерлиху показан только метод раскадровки.

1 ответ

Создайте HeadeView с помощью UICollectionReusableView и вызовите следующих делегатов.

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
    {
        if (kind == UICollectionElementKindSectionHeader) {
            HeaderView *headerView = nil;
        headerView = (ProductListingHeaderView*)[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];

        if (headerView == nil) {
            headerView=[[[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil] objectAtIndex:0];
        }
    return headerView;

        }
        return nil;
    }

    -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
        if (![collectionView numberOfItemsInSection:section]) {
            return CGSizeZero;
        }
        return CGSizeMake([(UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout headerReferenceSize].width, searchBarHeight);

    }
Другие вопросы по тегам