取消选择在的CollectionView的所有细胞,同时改变视觉状态
问题描述:
我的代码,应该取消集合视图中(myHobbiesCV)所有单元块,而基于cellForItemAt(只是一个字母的变化!没有什么疯狂的更新他们的视觉状态。 )取消选择在的CollectionView的所有细胞,同时改变视觉状态
所有选择的单元被加入到一个字符串数组称为:myHobbiesArraySelected。当按下按钮[取消选择所有爱好]时,它应该清除myHobbieArraySelected数组,并将所有单元格更改为未选中的可视状态。
@IBAction func deselectAllPressed(_ sender: UIButton) {
let allSelected = myHobbiesCV.indexPathsForSelectedItems
for deselect in allSelected! {
print("deselected all")
myHobbiesCV.deselectItem(at: deselect, animated: true)
// This is essentially doing nothing :(
}
myHobbiesArraySelected.removeAll()
print(myHobbiesArraySelected)
}
它用removeAll清除数组,但是单元格的视觉状态根本没有改变。
我怎样才能改变细胞的视觉状态,未选择的,与歼灭沿阵?
答
如何通过所有可见单元格枚举并更改其外观 (如果您想要取消选择它们)?
for cell in collectionView.visibleCells {
// Change alpha
}
宇豪!这工作。快速的问题 - 如果我的myHobbiesCV是1000个条目(它不会......只是问题的缘故) - 将visibleCells改变α波状态上的所有,即使他们目前没有在屏幕上? – Joe
那么,你应该多读一点关于细胞的集合视图/表视图: - )从技术上来看 - 细胞的iOS是可重用的,这意味着 - 你总是使用电池,同捆不管有多少次你滚动。这就是为什么你不应该将单元格保存到数组(最好的选择是存储它们的索引路径)。所以如果你的“cellForIndexPath”中的逻辑是正确的,它应该改变所有单元格的可见性。 –
酷!由于此配置文件设置部分的整体功能,我没有保存indexPath。用户可以从多种兴趣类别中选择多种兴趣爱好,因此最好决定保存该项目本身。 – Joe