无法在UIView xib中向UICollectionView添加项目

ril*_*lar 15 uiview ios uicollectionview uicollectionviewcell swift

目的

我想将我的(BusinessViewTableHeader:UIView)作为tableView标头放置:

tableView.tableHeaderView = BusinessViewTableHeader.instanceFromNib() as! BusinessViewTableHeader
Run Code Online (Sandbox Code Playgroud)

在BusinessViewTableHeader内部有一个UICollectionView,它应该在刷卡时显示图像,就像Tinder应用程序一样.

这是我的UIView子类:

class BusinessViewTableHeader: UIView {

    @IBOutlet var collectionView: UICollectionView!

    override func awakeFromNib() {
        super.awakeFromNib()
        self.collectionView.delegate = self
        self.collectionView.registerNib(UINib(nibName: "BusinessImageCollectionCell", bundle: nil), forCellWithReuseIdentifier: "BusinessImageCollectionCell")
    }

    class func instanceFromNib() -> UIView {
        return UINib(nibName: "BusinessViewTableHeader", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
    }

    ....
}

extension BusinessViewTableHeader: UICollectionViewDelegate, UICollectionViewDataSource {
    ....
}
Run Code Online (Sandbox Code Playgroud)

问题

我有一个包含UICollectionView的自定义UIView xib.问题是我无法将任何单元格(项)添加到UICollectionView.我可以将项添加到放在UIViewController中的其他UICollectionView.第一个图像显示UIViewController内UICollectionView的属性,第二个图像显示UIView xib内的UICollectionView.

UIViewController中的UICollectionView [UIView xib中的UICollectionView2

为什么我无法将项添加到UIView xib中的UICollectionView?有办法做到这一点吗?

Pat*_*zar 25

当UICollectionView在Nib上时,您不能拥有UICollectionViewCell.您需要做的是将UICollectionViewCell创建为另一个nib,并将其注册到您用于CollectionView的类中.

创建一个新的nib,在其中拖动一个UICollectionViewCell,并在与UICollectionView一起使用的类中执行类似的操作.

override func awakeFromNib() {
    let nibName = UINib(nibName: "ClassCollectionCell", bundle:nil)
    collectionView.registerNib(nibName, forCellWithReuseIdentifier: "collectionCell")
}
Run Code Online (Sandbox Code Playgroud)

请记住,您可以将自定义类添加到UICollectionViewCell,以便可以将动态数据传递给它.