将UICollectionView与自定义Cell一起使用

时间:2014-08-22 09:45:55

标签: swift uicollectionview ios8 uicollectionviewcell

我想使用collectionview,为此我创建了一个自定义collectionviewcell。但是当我访问单元格的任何元素时,结果是nil并且没有为我们分配给我们的值。

例如: 我有一个细胞,我有一个标签。当我这样做时:

cell.nameLabel?.text = contact.objectAtIndex(0) as String

不会将其分配给该值。如果删除可选的东西,应用程序崩溃时会出现错误"在展开选项值&#34时找到nil;

这就是我设置集合视图的方式:

self.contactsCollection.tag = 112
        self.contactsCollection.registerClass(CollectionCell.self, forCellWithReuseIdentifier: "collectionCell")
        self.flowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal
        self.flowLayout.minimumInteritemSpacing = 2.0
        self.flowLayout.minimumLineSpacing = 2.0
        self.contactsCollection.pagingEnabled = true
        self.contactsCollection.showsHorizontalScrollIndicator = false
        self.contactsCollection.collectionViewLayout = self.flowLayout

其余是collectionView的常规委托方法。

我的问题是,为什么标签为零并且我分配的值未分配给标签?

2 个答案:

答案 0 :(得分:0)

假设您已在故事板中创建了原型单元格,请删除self.contactsCollection.registerClass(CollectionCell.self, forCellWithReuseIdentifier: "collectionCell")

通过调用它,我相信故事板中的原型被覆盖,这就是标签为零的原因。

答案 1 :(得分:0)

改为使用

register(nib: UINib, forCellWithReuseIdentifier)

代码将是

self.contactsCollection.register(UINib(nibName: String(describing: CollectionCell.self), bundle: Bundle(for: CollectionCell.self)), forCellWithReuseIdentifier: "collectionCell")

必须完全调用该文件,CollectionCell.xib

相关问题