ios UICollectionView 单元格选择和取消选择问题
Posted
技术标签:
【中文标题】ios UICollectionView 单元格选择和取消选择问题【英文标题】:ios UICollectionView cell selecting and deselecting issue 【发布时间】:2017-11-29 04:46:17 【问题描述】:我使用 UIcollection 视图作为我的标签栏 当我水平滚动集合视图时,当我选择新单元格时,前一个选定的单元格不会取消选择
这是我选择一个单元格并取消选择一个单元格时更改颜色的代码
var selectedIndexPath : IndexPath = []
func collectionView(_ collectionView: UICollectionView,
didSelectItemAt indexPath: IndexPath)
if let cell = collectionView.cellForItem(at: indexPath) as?
BottomCollectionViewCell
cell.contentView.backgroundColor = UIColor.orange
cell.backgroundColor = UIColor.orange
if let preViousSelectedcell = collectionView.cellForItem(at:
selectedIndexPath) as? BottomCollectionViewCell
preViousSelectedcell.contentView.backgroundColor=UIColor.purple
preViousSelectedcell.backgroundColor = UIColor.purple
selectedIndexPath = indexPath
【问题讨论】:
使用collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath)
我已经使用了,但没有任何改变。我认为滚动视图时索引路径正在改变。
你能否更新你的答案,展示你是如何使用它的?
@Sath.Dev 如果您单击一个已被选中的单元格,则将调用取消选择,而不是如果您选择任何其他单元格。做一些研究,你会得到很多答案。
【参考方案1】:
在重复使用滚动单元格时,cellForItemAt
将调用,因此您需要更改代码中的一些修改
func collectionView(_ collectionView: UICollectionView,
didSelectItemAt indexPath: IndexPath)
selectedIndexPath = indexPath
YOUR_COLLECTION_VIEW.reloadData()
并在collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
中添加以下行
if indexPath == selectedIndexPath
cell.contentView.backgroundColor=UIColor.purple
cell.backgroundColor = UIColor.purple
else
cell.contentView.backgroundColor = UIColor.orange
cell.backgroundColor = UIColor.orange
希望对你有帮助
【讨论】:
以上是关于ios UICollectionView 单元格选择和取消选择问题的主要内容,如果未能解决你的问题,请参考以下文章
IOS:通过长按选择 UICollectionView 单元格
根据文本调整单元格宽度 - UICollectionView - iOS
如何在 iOS 中动态更改 UICollectionView 单元格高度