所以我有一个collectionView,其中包含一系列趋势,用户可以单击以显示该照片。单击该单元格时,将出现一个选中标记,让用户知道他们已经选择了该类别。
我遇到的问题是当我在应用程序中编辑照片时,未选择应选择的同一收藏夹视图单元格(因为我在上传照片之前选择了它,并且复选标记为.ishidden
关闭视图控制器后,如何保持选定或未选定单元格的状态?
var selectedCategoryValues = [String]()
var trend: Trend!
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if collectionView == trendCollectionView {
switch selectedSegmentIndex {
case 0: self.trend = femaleTrends[indexPath.row]
print("You selected \(trend.childValue)")
self.selectedCategoryValues.append(trend.childValue)
case 1: self.trend = maleTrends[indexPath.row]
print("You selected \(trend.childValue)")
self.selectedCategoryValues.append(trend.childValue)
default: break
}
集合视图单元格
class TrendsCollectionCell: UICollectionViewCell {
override var isSelected: Bool {
didSet{
if self.isSelected {
trendCheckmark.isHidden = false
}
else {
trendCheckmark.isHidden = true
}
}
}
}
您可以将所选索引存储为某些状态的一部分,然后根据需要存储/使用该状态。您可以通过具有一些属性selectedIndex
来执行此操作,或者,如果具有更多属性,则可以在viewState
中具有一些要更新的结构didSelectItemAt
。然后,您可以在视图控制器之外使用一些状态管理器(推荐),或者在视图控制器之间传递状态(如果您有简单的应用程序)。
维护单元格选定状态所需的三个步骤。这适用于table view
和collection view
1。保持最后选择的索引作为选定的单元格。
2。在每个选择呼叫上更新cellindex
。
3。对于每种cellforrowindex
方法,请检查此selected
单元格是否。
进一步的解释是我先前的回答https://stackoverflow.com/questions/59293617/multiple-cells-selected-on-scrolling-reuse-cells-problem/
我从不建议使用单元格选择的变量来检测单元格的选择,因为该变量不能完全描述状态,因为UICollectionView和UITableView的出队和回收机制如此,因此我建议每次都将所有状态都依赖于模型,所以你有2个选项