原因
collectionView
管理选中项和自己管理选中项冲突。
collectionView
管理选中项
collectionView
会设置选中项的 cell
isSelected=true
。当 cell
重新加载时,即collectionView(UICollectionView, cellForItemAt: IndexPath) -> UICollectionViewCell
返回 cell
对象之后,collectionView
重新设置 cell
的选中状态(猜测)。
自己管理选中项
手动更新选中项的 cell
的视图,比如调用 reloadData()
reloadItems(at: [IndexPath])
。在提供 cell
的回调函数中设置 cell
的选中状态。
冲突
如果同时自己手动更新选中项的 cell
的视图和在 cell
的 isSelected
属性变动时更新视图,如上所述,在 cell
重新加载时,collectionView
会根据内部的记录设置 cell
的 isSelected
属性,如果 collectionView
内部记录里 cell
不是选中状态,则 cell
的视图更新为未被选中状态。