iOS; par programme collectionView avec des en-têtes personnalisés

Je suis en train de faire une application iOS dans swift, et je suis en train de faire un collectionView par programmation.
Je veux utiliser mon propre sous-classe de UICollectionReusableView comme en-tête de la collectionview, parce que j'ai besoin de quelques boutons et un strechable image dans l'en-tête.

SupView est le UICollectionReusableView.

override func viewDidLoad() {
    super.viewDidLoad()


    let layout = UICollectionViewFlowLayout()
    layout.headerReferenceSize = CGSizeMake(self.view.frame.width, 200)

    someView = SupView(frame: CGRectMake(0, 0, view.frame.width, 200))

    collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self

    collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
    collectionView.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "headerCell")  //UICollectionReusableView
    self.view.addSubview(collectionView)
}

J'essaie d'insérer le Complémentaire de Vue en viewForSupplementaryElementOfKind, comme ça, mais j'obtiens une erreur lorsque vous essayez de créer l'en-tête:

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
    var reusableView : UICollectionReusableView? = nil

    //Create header
    if (kind == UICollectionElementKindSectionHeader) {
        //Create Header
        let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "headerCell", forIndexPath: indexPath) as! SupView
        headerView.frame = CGRectMake(0, 0, view.frame.width, 200)

        reusableView = headerView
    }
    return reusableView!
}

L'erreur est dans let headerView = ... et dit: "signal SIGABRT"

Comment dois-je initialiser le headerview, de sorte que le je à mon flowlayout? peut-être avec avec

collectionView.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "headerCell")

mais si j'essaie d'enregistrer le SupView de classe, il me donne l'erreur:

.../collectionViewPlay/ViewController.swift:32:24: Ne peut pas invoquer 'registerClass" avec une liste d'arguments de type '(SupView!, forSupplementaryViewOfKind: String, withReuseIdentifier: String)'

Des Idées?

EDIT:

La mise en œuvre de la sous-classe demandée:

    import UIKit

    class SupView: UICollectionReusableView {

    //////////////////////////////////////////////////////////////////////////////
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.myCustomInit()
    }


    //////////////////////////////////////////////////////////////////////////////
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        self.myCustomInit()
    }

    func myCustomInit() {
        print("hello there from SupView")
    }

}
Montrez à la classe de mise en œuvre de SupView

OriginalL'auteur Wiingaard | 2015-10-26