【问题标题】:My UICollectionViewCell item is nil?我的 UICollectionViewCell 项目为零?
【发布时间】:2018-04-19 08:13:28
【问题描述】:

我的 CollectionViewCell imageView 是 nil

我的手机文件在这里

class MyTicketsCollectionViewCell: UICollectionViewCell {

     @IBOutlet weak var imgTicket: UIImageView!
}

我的控制器文件代码在这里

class MyTicketsCollectionViewController: UICollectionViewController {

     var photos: [String] = ["ticket1","ticket2","ticket3","ticket4"]

     override func viewDidLoad() {
     super.viewDidLoad()

         self.collectionView?.register(MyTicketsCollectionViewCell.self, forCellWithReuseIdentifier: "MyTicketsCollectionViewCell")

     }

     override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

         return photos.count
     }

     override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {


         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyTicketsCollectionViewCell", for: indexPath) as! MyTicketsCollectionViewCell

         cell.imgTicket.image = UIImage(named: photos[indexPath.row])

        return cell
    }

}

错误是“线程 1:致命错误:在展开可选值时意外发现 nil”

当我调试它时

 cell.imgTicket is nil

如何解决这个问题?

【问题讨论】:

  • 你的细胞的“视觉”在哪里?在单独的xib中?在您的 stroyboard 的 CollectionView 中?
  • 您的插座未正确连接。重新检查一下。
  • 类型不匹配:ActiveTicketsCollectionViewCell != MyTicketsCollectionViewCell

标签: ios swift uicollectionviewcell iboutlet


【解决方案1】:

尝试将您的代码更改为

   override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyTicketsCollectionViewCell", for: indexPath) as! MyTicketsCollectionViewCell

     cell.imgTicket.image = UIImage(named: photos[indexPath.row])

    return cell
}

【讨论】:

    【解决方案2】:

    您正在使ActiveTicketsCollectionViewCell 出队,但该单元格已在MyTicketsCollectionViewCell 下注册。

    【讨论】:

      【解决方案3】:

      这里有两种可能的解决方案...

      1. 可能是 ActiveTicketsCollectionViewCell 没有属性 imgTicket 或者您在这里提到了错误的单元格类,因为您提到了不同的单元格类命名 MyTicketsCollectionViewCell 所以尝试编写这段代码。

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyTicketsCollectionViewCell", for: indexPath) as! MyTicketsCollectionViewCell
      
        cell.imgTicket.image = UIImage(named: photos[indexPath.row])
      
        return cell
      

      2.您可能错过了将您的财产 (@IBOutlet weak var imgTicket: UIImageView!) 与 Outlet(xib 或故事板)联系起来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-29
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多