Ios XCode7:“;未能呈现“的实例”;影响所有UICollectionViewCells

Ios XCode7:“;未能呈现“的实例”;影响所有UICollectionViewCells,ios,xcode,swift,storyboard,uicollectionviewcell,Ios,Xcode,Swift,Storyboard,Uicollectionviewcell,当前,在故事板中使用UICollectionViewCells时,我总是遇到错误。没有其他控件显示此行为。我怎样才能摆脱它们 以下是其中一个受影响的CollectionViewCell的外观: 我是这样定义的: 以下是类别集合单元格的代码 import UIKit import Foundation @IBDesignable class CategoryCollectionCell : UICollectionViewCell { @IBOutlet private weak

当前,在故事板中使用UICollectionViewCells时,我总是遇到错误。没有其他控件显示此行为。我怎样才能摆脱它们

以下是其中一个受影响的CollectionViewCell的外观:

我是这样定义的:

以下是
类别集合单元格的代码

import UIKit
import Foundation

@IBDesignable class CategoryCollectionCell : UICollectionViewCell {

    @IBOutlet private weak var imageView: UIImageView!
    @IBOutlet private weak var label: UILabel!

    internal var id : Int?

    override var highlighted : Bool {
        didSet {
            label.textColor = highlighted ? UIColor.greenColor() : UIColor.whiteColor()
        }
    }

    @IBInspectable var text : String? {
        get { return label.text }
        set(value) { label.text = value }
    }

    @IBInspectable var image : UIImage? {
        get { return imageView.image }
        set(value) { imageView.image = value }
    }
}
class FooTableCell : UITableViewCell {

    @IBOutlet private weak var checkmarkImageView: UIImageView!

    override internal var selected : Bool {
        didSet {
            checkmarkImageView.hidden = !selected
        }
    }
}
这是CollectionViewController的代码:

extension CategoryViewController : UICollectionViewController {

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = self.collectionView?.dequeueReusableCellWithReuseIdentifier(kReuseCellIdentifier, forIndexPath: indexPath)
        var categoryCollectionCell = cell as? CategoryCollectionCell
        if categoryCollectionCell == nil {
            categoryCollectionCell = CategoryCollectionCell()
        }

        let data = getDataForIndexPath(indexPath)
        if data != nil {
            categoryCollectionCell?.id = data!.id
            categoryCollectionCell!.text = data!.category
            categoryCollectionCell!.image = data!.image
        }

        return categoryCollectionCell!
    }

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

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

extension CategoryViewController : UICollectionViewDelegateFlowLayout {
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        guard let flowLayout = collectionViewLayout as? UICollectionViewFlowLayout else {
            return CGSize()
        }

        let width = CGRectGetWidth(collectionView.bounds)
        let padding = flowLayout.sectionInset.left + flowLayout.sectionInset.right
        let itemSpacing = flowLayout.minimumInteritemSpacing
        let size = (width - padding - itemSpacing) / 2
        return CGSize(width: size, height: size)
    }
}

嗯。我发现XCode显示的错误与实际问题无关

目录
/Users/{Username}/Library/Logs/DiagnosticReports
应包含以下名称的文件:
ibdesignablesagentcocoatch[…]。crash

在它们里面,我发现了stacktraces,这让我找到了真正的问题: 问题出在自定义
UITableViewCell
的代码中,而不是
UICollectionViewCell

import UIKit
import Foundation

@IBDesignable class CategoryCollectionCell : UICollectionViewCell {

    @IBOutlet private weak var imageView: UIImageView!
    @IBOutlet private weak var label: UILabel!

    internal var id : Int?

    override var highlighted : Bool {
        didSet {
            label.textColor = highlighted ? UIColor.greenColor() : UIColor.whiteColor()
        }
    }

    @IBInspectable var text : String? {
        get { return label.text }
        set(value) { label.text = value }
    }

    @IBInspectable var image : UIImage? {
        get { return imageView.image }
        set(value) { imageView.image = value }
    }
}
class FooTableCell : UITableViewCell {

    @IBOutlet private weak var checkmarkImageView: UIImageView!

    override internal var selected : Bool {
        didSet {
            checkmarkImageView.hidden = !selected
        }
    }
}
使用设计器时,
checkmarkImageView
nil
。正因为如此,Cocoa情节提要代理崩溃了

我通过添加一个守卫声明来修复它:

class FooTableCell : UITableViewCell {

    @IBOutlet private weak var checkmarkImageView: UIImageView!

    override internal var selected : Bool {
        didSet {
            guard let imageView = checkmarkImageView else {
                return
            }

            imageView.hidden = !selected
        }
    }
}