我正在研究如何创建一个没有故事板的简单应用程序,但我遇到了一个问题:我创建了一个名为HomeViewController
的XIB,它内部有一个UICollectionView
并在ViewDidLoad()
中注册了单元格。之后,我创建了一个名为HomeCollectionViewCell
的单元格,将Identifier
作为“cell”,在该单元格中它有一个uilabel
出口,该出口在.swift文件中引用。在设置了委托
和数据源
之后,它具有数据源的强制方法,在进行单元格配置并通过设置任何文本调用标签时,它将返回NIL。我不知道为什么会这样,我在YouTube上看了几个视频,没有一个能解决这个问题。有人能帮我吗?
HomeViewController
class HomeViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var info = ["Image"]
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(HomeCollectionViewCell.self, forCellWithReuseIdentifier:
"cell")
collectionView.delegate = self
collectionView.dataSource = self
}
}
extension HomeViewController: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection
section: Int) -> Int {
return info.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath:
IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for:
indexPath) as? HomeCollectionViewCell
cell?.teste.text = "test"
return cell!
}
}
HomeCollectionViewCell
class HomeCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var teste: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
}
这是因为您必须注册Cell的笔尖,而不仅仅是类:
collectionView.register(UINib(nibName: "HomeCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")