2017-04-02 26 views
2

我的代码,应该取消集合视图中(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清除数组,但是单元格的视觉状态根本没有改变。

我怎样才能改变细胞的视觉状态,未选择的,与歼灭沿阵?

回答

1

如何通过所有可见单元格枚举并更改其外观 (如果您想要取消选择它们)?

for cell in collectionView.visibleCells { 
    // Change alpha 
} 
+0

宇豪!这工作。快速的问题 - 如果我的myHobbiesCV是1000个条目(它不会......只是问题的缘故) - 将visibleCells改变α波状态上的所有,即使他们目前没有在屏幕上? – Joe

+0

那么,你应该多读一点关于细胞的集合视图/表视图: - )从技术上来看 - 细胞的iOS是可重用的,这意味着 - 你总是使用电池,同捆不管有多少次你滚动。这就是为什么你不应该将单元格保存到数组(最好的选择是存储它们的索引路径)。所以如果你的“cellForIndexPath”中的逻辑是正确的,它应该改变所有单元格的可见性。 –

+0

酷!由于此配置文件设置部分的整体功能,我没有保存indexPath。用户可以从多种兴趣类别中选择多种兴趣爱好,因此最好决定保存该项目本身。 – Joe