我UICollectionView
在水平流布局中显示自定义单元格;换句话说,某些内容位于屏幕边界之外。此外,我的手势会NSNotification
导致我的单元格中某些元素(即主题)的颜色发生变化。除了屏幕边界之外的单元格不会全部更新为新的颜色变化之外,其他所有功能都可以正常运行。有什么办法强迫他们重画?
在调用的函数,当NSNotification
被激发我试着与重绘收集观点self.collectionView.reloadData()
,self.collectionView.setNeedsDisplay()
与self.collectionView.setNeedsLayout
但无济于事。我尝试了awakeFromNib()
自定义单元格类中列表的最后两个,但是什么也没做。
这是我的代码cellForItemAtIndexPath
:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = popularCollectionView!.dequeueReusableCellWithReuseIdentifier("popular", forIndexPath: indexPath) as! PopularPainting
cell.thumbnail.image = paintings[indexPath.row].paintingImage
cell.name!.text = paintings[indexPath.row].paintingName
cell.price!.setTitle(paintings[indexPath.row].paintingPrice, forState: UIControlState.Normal)
if cell.isDark {
cell.name!.textColor = UIColor(red: 205/255, green: 205/255, blue: 205/255, alpha: 1)
cell.price!.setTitleColor(self.kPaleBlue, forState: .Normal)
self.popularCollectionView.reloadData()
}
return cell
}
有什么建议?
注意:滚动到屏幕外的内容并重复手势以更改主题非常有效,因此我不知道发生了什么。
您认为集合视图中每个项目在屏幕外都存在单元格的假设是不正确的。实际上,表视图和集合视图重复使用了在屏幕外滚动显示的新单元格,因此,仅存在一个经过筛选的单元格。
reloadData
通知触发后,您可以打电话。但是您需要确保的实现collectionView:itemForRowAtIndexPath:
会正确配置随后在屏幕上滚动的单元格。这可能意味着在通知触发后将状态更改保存在属性中,并在中配置单元格时检查该属性collectionView:itemForRowAtIndexPath:
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句