提问者:小点点

加载UICollectionViewCell时,IBOutelt发现为零


我正在研究如何创建一个没有故事板的简单应用程序,但我遇到了一个问题:我创建了一个名为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()
     
   }

 }

共1个答案

匿名用户

这是因为您必须注册Cell的笔尖,而不仅仅是类:

collectionView.register(UINib(nibName: "HomeCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")