我正在使用水平集合视图滚动日期。集合视图包含30个单元格。如果我选择第一个单元格,表示选择,单元格背景颜色已从默认颜色红色更改为棕色。然后,如果我选择另一个单元格,所选单元格颜色已从红色更改为棕色。但第一个单元格BGColor保持不变(棕色)。如何通过单击其他单元格更改为默认颜色?
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath
indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell",
forIndexPath: indexPath) as myViewCell
cell.date_label.text = arr_date[indexPath.item]
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath
indexPath: NSIndexPath) {
var cell = collectionView.cellForItemAtIndexPath(indexPath) as myViewCell
if(cell.selected)
{
cell.backgroundColor = UIColor.brownColor()
}
else
{
cell.backgroundColor = UIColor.redColor()
}
}
4条答案
按热度按时间dw1jzc5e1#
可以使用带有参数
didSelectItemAtIndexPath
的函数collectionView
这将为选定的
UICollectionViewCell
创建一个常量,然后只需更改背景的颜色然后,要在取消选择时返回到原始颜色,必须使用带有参数
didDeselectItemAtIndexPath
的函数collectionView
然后你把颜色改成原来的颜色!
例如,这里是一个filterApp中的代码截图
UICollectionView example
aydmsdu92#
可能很疯狂,但对我来说很好用...!
z5btuh9x3#
您可以维护最后选择的索引路径的副本,然后在
didSelectItemAtIndexPath
中比较索引路径以查看它们是否不同。如果不同,请根据需要更改这些索引路径处的两个单元格的颜色,然后将新索引路径复制到旧索引路径上。编辑
再次思考这个问题,这应该通过单元格的
backgroundView
和selectedBackgroundView
属性来完成。在您将单元格出列后,您可以执行以下操作,让iOS处理更改。zf9nrax14#
处理所选单元格背景颜色的最佳方法是观察
isSelected
属性。这可以处理选择和取消选择单元格,否则在选择任何其他单元格时取消选择所选单元格将很棘手。下面是使用UICollectionViewCell
的isSelected
属性的演示: