子类化自定义CollectionView Cell不显示父UI

时间:2017-01-24 09:47:13

标签: ios swift uiview uicollectionview uikit

我有一个我从xib创建的自定义单元格。

看起来像这样:

collectionViewCell

我还有2个其他单元格只在类中创建,并将其子类化。

需要为containerView

添加不同的观点

所以在我UIViewController我注册所有单元格。

@IBOutlet weak var collectionView: UICollectionView! {
    didSet {
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.register(cell1.self, forCellWithReuseIdentifier: "cell1")
        collectionView.register(cell2.self, forCellWithReuseIdentifier: "cell2")
        collectionView.register(UINib(nibName: "ParentCell", bundle: nil), forCellWithReuseIdentifier: "parentCell")
    }
}

并使细胞出列。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    if indexPath.row == 0 {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as! cell1
        cell.containerView.backgroundColor = UIColor.yellow
        return cell
    }

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! cell2
    cell.containerView.backgroundColor = UIColor.red

    return cell
}

但应用程序崩溃了

  

致命错误:在解包可选值时意外发现nil

当我尝试使用containerView

有任何建议如何实施?
感谢

编辑:

我的问题是来自父单元的视图没有被实例化。 我明白了什么

  

致命错误:在解包可选值时意外发现nil

装置。我不明白为什么视图没有被实例化。

崩溃在

cell.containerView.backgroundColor

1 个答案:

答案 0 :(得分:-2)

这个错误让你使用nil varible by!

检查两行

   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as! cell1

   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! cell2