UICollectionViewCellawakeFromNib 从未被调用,即使 registerNib 被调用

Cra*_*lot 7 uikit ios uicollectionview uicollectionviewcell swift

下面的代码尝试UICollectionView在自定义视图中创建一个。由于UICollectionView不是在 Storyboard 中创建的,这意味着UICollectionViewCells在 XIB 中创建自定义。

但是,awakeFromNib从未为自定义调用该函数UICollectionViewCell,这会导致呈现UICollectionView.

如何解决这个问题?

自定义视图.swift:

class CustomView : UIView, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

    @IBOutlet weak var collectionView: UICollectionView!

    private func doInit() {
        if let nibsView = NSBundle.mainBundle().loadNibNamed("CustomCellView", owner: self, options: nil) as? [UIView] {
            let nibRoot = nibsView[0]
            self.addSubview(nibRoot)
            nibRoot.frame = self.bounds

            // Register UICollectionViewCell NIB
            collectionView.registerNib(UINib(nibName: CustomCellNib, bundle: nil), forCellWithReuseIdentifier: CustomCellID)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

CustomCell.swift:

class CustomCell: UICollectionViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        doInit(frame)
    }

}
Run Code Online (Sandbox Code Playgroud)

Moo*_*oos 0

将您的代码行更改为

collectionView.register(UINib(nibName: CustomCellNib, bundle: nil), forCellWithReuseIdentifier: CustomCellID)
Run Code Online (Sandbox Code Playgroud)