将UICollectionView与自定义Cell一起使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将UICollectionView与自定义Cell一起使用相关的知识,希望对你有一定的参考价值。

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

例如:我有一个我有标签的单元格。当我做:

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

它不会被分配给该值。如果删除可选的东西,应用程序崩溃错误“在展开选项值时找到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的常规委托方法。

我的问题是为什么标签是零并且我分配的值没有被分配给标签?

答案

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

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

另一答案

请改用

register(nib: UINib, forCellWithReuseIdentifier)

代码将是

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

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

以上是关于将UICollectionView与自定义Cell一起使用的主要内容,如果未能解决你的问题,请参考以下文章

XCTest 与自定义 UICollectionViewCell

UICollectionview 不工作,我没有得到任何 Cell

实现类似微信表情包横向滚动翻页的功能,运用UICollectionView,自定义UICollectionViewFlowLayout,cell左右排版 ,支持多组Cell实现。

didSelectRowAtIndexPath 与自定义单元格

UICollectionView Cell 在选择时不会改变

如何将视频从 ALAsset 显示到 UICollectionview Cell