swift imageView,collectionView,在展开Optional值时意外发现nil

时间:2015-11-26 17:47:44

标签: ios swift null

首先:我知道关于这个问题有成千上万的问题,并且肯定在其中一个问题得到了解答。但经过几个小时的搜索,我没有找到解决问题的答案......

我有一个CollectionViewController(在容器内)和一个CollectionViewCell。在Cell内部有一个imageView。必须使用CollectionViewController中的按钮更改imageView的图像。

这是我的代码:

class essenCell: UICollectionViewCell {
@IBOutlet weak var Bild: UIImageView!
}

(细胞)

class essenCollectionViewController: UICollectionViewController {
[...]
@IBAction func xyz(sender: UIButton!) {
//following: the line with the error (unexpectedly found nil while unwrapping an Optional value)
essenCell().Bild.image = UIImage(named: "erster")
}
}

(CollectionViewController)

首先我认为我可以将Button连接到Cell和Controller,这在理论上有效,但在我的具体情况下不起作用。 图像更改发生在if-Loop(我的控制器内部)内,它引用了parentViewController。因为我不能在Cell中使用这个引用,所以我需要按钮功能在Controller中。

帮助我!

1 个答案:

答案 0 :(得分:0)

collectionViewCell的所有设置都应在cellForItemAtIndexPath中完成。

var buttonPressed = false

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("reuseCell", forIndexPath: indexPath) as! essenCell

    if buttonPressed {
        cell.Bild.image = UIImage(named: "erster")
    } else {
        cell.Bild.image = UIImage(named: "placeHolder")

    return cell
}

@IBAction func xyz(sender: UIButton!) {
    buttonPressed = true
    collectionView?.reloadData()
}