我想使用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的常规委托方法。
我的问题是,为什么标签为零并且我分配的值未分配给标签?
答案 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