程序化 UICollectionViewController 中的空白自定义集合单元格

Blank Custom Collection Cell in Programmatic UICollectionViewController

我正在尝试以编程方式实现 UICollectionViewController(不使用情节提要,尽管我的项目确实使用情节提要来做其他事情)。我能够连接我的数据源并显示与索引中的命中数相对应的单元格数,但这些单元格是空白且通用的;我的自定义单元格没有按预期显示。

import UIKit
import InstantSearch

private let reuseIdentifier = "CollectionGridCell"

class ResultsCollectionViewController: UICollectionViewController, HitsController {

    var hitsSource: HitsInteractor<Test>?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.register(CollectionGridCell.self, forCellWithReuseIdentifier: reuseIdentifier)
        collectionView.backgroundColor = .clear
        // Do any additional setup after loading the view.
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
 
        return hitsSource?.numberOfHits() ?? 0    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CollectionGridCell

        // Configure the cell
         let hit = hitsSource?.hit(atIndex: indexPath.row)
        cell.backgroundColor = UIColor.red

        return cell
    }
}

此 UICollectionTableViewController 是 StackView 的一部分。从 parent VC 开始,它是这样初始化的:

 let hitsCollectionController = ResultsCollectionViewController(collectionViewLayout: UICollectionViewFlowLayout())
 stackView.addArrangedSubview(hitsCollectionController.collectionView)

这是我看到的。请注意,方块的数量准确反映了我的数据源中有多少项。

这是我的 xib 文件,如果有帮助的话。

我期望发生的是,单元格内部应该有一个带有“测试”的标签,我可以根据点击率进行设置。相反,它们只是空白,看起来像默认单元格。我的手机 registering/displaying 不正确。我觉得它与布局设置有关,但我真的不确定。我有一个相应的 table 视图,工作正常。

您已经在 nib 文件中创建了单元格,因此您需要通过提供 nib 文件名将其注册到 nib 初始值设定项。

collectionView.register(UINib(nibName: <#T##String#>, bundle: nil), forCellWithReuseIdentifier: reuseIdentifier) // provide the nib file name in the placeholder