我正在尝试按this tutorial
中所述实现收集它崩溃在以下一行
let gelleryImageView: UIImageView = (cell.viewWithTag(100) as! UIImageView)
带
fatal error: unexpectedly found nil while unwrapping an Optional value
我的imageView是可重复使用单元格的唯一子项,而imageView的标记为100
其余方法
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
// Configure the cell
print(cell.subviews.count)
let gelleryImageView: UIImageView = (cell.viewWithTag(100) as! UIImageView)
gelleryImageView.image = images[indexPath.row]
return cell
}
答案 0 :(得分:1)
这个错误告诉你,你强行解开的东西"!"实际上是零。
在你习惯选择之前,不要使用强制解包。这很危险。
相反,使用"如果让"可选绑定,或保护语句,或其他一些方法,如果可选项包含nil,则可以使您正常失败。
在您的情况下,很可能没有标记为100的视图,因此它返回nil。如果您没有使用强制解包,那么您就可以
请参阅我创建的关于该主题的主题:
How to deal with "Fatal error: unexpectedly found nil while unwrapping an Optional value."
答案 1 :(得分:0)
您不应该通过标签访问单元格图像。创建一个自定义单元类并为imageView创建一个插座并以这种方式访问它。
从viewdidload()中删除行
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
//
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! GalleryCollectionViewCell
cell.galleryImage.image = images[indexPath.row]
return cell
}