Переключение Collectionviews Header / Footer через вид - PullRequest
0 голосов
/ 04 сентября 2018

В моем CollectionView есть верхний и нижний колонтитулы, и я хочу, чтобы они отображались. В текущем состоянии я получаю 2x заголовок, потому что «вид» раздела не изменяется автоматически, и он дважды входит в регистр « UICollectionElementKindSectionHeader ».

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

func setupCollectionView() {
    collectionView?.backgroundColor = .white
    collectionView?.register(ProfileHeader.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: ProfileHeader.reuseIdentifier)
    collectionView?.register(ProfileFooter.self, forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: ProfileFooter.reuseIdentifier)
}

override func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 2
}

override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
    switch kind {
    case UICollectionElementKindSectionHeader:
        let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: ProfileHeader.reuseIdentifier, for: indexPath) as! ProfileHeader
        header.user = self.user
        return header

    case UICollectionElementKindSectionFooter:
        let footer = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: ProfileFooter.reuseIdentifier, for: indexPath) as! ProfileFooter
        return footer

    default:
        assert(false, "Unexpected element kind")
    }
}

1 Ответ

0 голосов
/ 05 сентября 2018

Причина в том, что я забыл определить базовый размер нижнего колонтитула. Без этого вид не воспринимается приложением.

...