如何维护集合视图单元格的状态?

问题描述 投票:0回答:3

所以我有一个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

            }
        }
    }
}
ios swift xcode uicollectionview uicollectionviewcell
3个回答
0
投票

您可以将所选索引存储为某些状态的一部分,然后根据需要存储/使用该状态。您可以通过具有一些属性selectedIndex来执行此操作,或者,如果具有更多属性,则可以在viewState中具有一些要更新的结构didSelectItemAt。然后,您可以在视图控制器之外使用一些状态管理器(推荐),或者在视图控制器之间传递状态(如果您有简单的应用程序)。


0
投票

维护单元格选定状态所需的三个步骤。这适用于table viewcollection view

1。保持最后选择的索引作为选定的单元格。

2。在每个选择呼叫上更新cellindex

3。对于每种cellforrowindex方法,请检查此selected单元格是否。

进一步的解释是我先前的回答https://stackoverflow.com/questions/59293617/multiple-cells-selected-on-scrolling-reuse-cells-problem/


0
投票

我从不建议使用单元格选择的变量来检测单元格的选择,因为该变量不能完全描述状态,因为UICollectionView和UITableView的出队和回收机制如此,因此我建议每次都将所有状态都依赖于模型,所以你有2个选项

  1. 向每个单元格ModelObject添加isSelcted属性
  2. 向视图控制器添加保留所选索引的单个属性
© www.soinside.com 2019 - 2024. All rights reserved.