程序化 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
我正在尝试以编程方式实现 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