UICollectionView show footer only for the last section
Asked Answered
D

1

7

How can I show footer view only for one section?

As I found out, I can't pass nil to hide footer views in other sections, as it produces crash.

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {

        var v : UICollectionReusableView! = nil
        if kind == UICollectionElementKindSectionHeader {
            let x = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier:reuseHeaderIdentifier, forIndexPath:indexPath) as HouseNameReusableView

            let h = houses[indexPath.section]        
            x.nameLabel.text = h["name"] as? String

            return x

        }else if kind == UICollectionElementKindSectionFooter {
            if indexPath.section == houses.count - 1{
            let x = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionFooter, withReuseIdentifier:reuseFooterIdentifier, forIndexPath:indexPath) as FooterCollectionReusableView

            return x
            }
        }
        return v
    }
Deflate answered 31/12, 2014 at 17:51 Comment(0)
D
18

You cannot pass nil to other footer views, but you can give the other footer views zero height, which amounts to the same thing - they won't appear, because they have no height.

So implement collectionView:layout:referenceSizeForFooterInSection: to give all the footers a zero height except for the one you actually want to see.

Decoction answered 31/12, 2014 at 17:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.