自定义UICollectionViewCell不显示UIImage和崩溃

时间:2015-07-08 22:29:25

标签: ios swift uicollectionview uicollectionviewcell

我在UICollectionView中使用了我称之为ExampleCell的自定义UICollectionViewCell,我试图为单元格设置的图像没有显示,应用程序崩溃了。我发现了类似的问题here,我尽我所知遵循了评论,但它没有帮助。

当我发表评论时

self.collectionView!.registerClass(RedeemCell.self, forCellWithReuseIdentifier: reuseIdentifier)

在ExampleCollectionViewController中,应用程序不会崩溃但显示黑框(因为我将单元格背景颜色设置为黑色)而不是实际图像。如果我取消注释该行,则应用程序崩溃并显示错误

fatal error: unexpectedly found nil while unwrapping an Optional value

ExampleCollectionViewController.swift:

import UIKit

private let reuseIdentifier = "ExampleCell"
private let sectionInsets = UIEdgeInsets(top: 50.0, left: 20.0, bottom: 50.0, right: 20.0)

class ExampleCollectionViewController: UICollectionViewController {
    let examples = Example.allExamples()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Register cell classes
        self.collectionView!.registerClass(ExampleCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: UICollectionViewDataSource

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return 1
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return examples.count
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> ExampleCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ExampleCell
        cell.backgroundColor = UIColor.blackColor()
        cell.configureForExample(examples[indexPath.row])
        return cell
    }
}

ExampleCell.swift:

import UIKit

class ExampleCell: UICollectionViewCell {
    @IBOutlet weak var exampleImageView: UIImageView!

    func configureForExample(example: Example) {
        exampleImageView.image = example.image
    }
}

Example.swift

import UIKit

@objc
class Example {
    let image: UIImage?

    init(image: UIImage?) {
        self.image = image
    }

    class func allExamples() -> Array<Example> {
        return [Example(image: UIImage(named: "Neutral")),
            Example(image: UIImage(named: "Sad")),
            Example(image: UIImage(named: "Happy")) ]
    }
}

在Identity Inspector中,我为ExampleCollectionViewController和ExampleCell设置了自定义类。此外,在属性检查器中,我有&#34; ExampleCell&#34;设置为&#34; Collection Reusable View&#34;下的标识符。对于ExampleCell。

关于我可能做错的任何想法?

1 个答案:

答案 0 :(得分:1)

显然,如果我设置背景颜色,然后尝试设置图像,

        cell.backgroundColor = UIColor.blackColor()
        cell.configureForExample(examples[indexPath.row])

黑色显示在图像上方。当我摆脱黑色背景色的线条时,我的图像出现了。并且认为我在这上花了几个小时,哈哈。