我的UICollectionViewCell项目是否为零?

时间:2018-04-19 08:13:29

标签: ios swift uicollectionviewcell iboutlet

我的CollectionViewCell imageView是零

我的手机文件在这里

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

如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试将代码更改为

   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 :(得分:0)

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

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或故事板)联系起来。