表格视图中的集合视图单元格慢速滚动性能

时间:2017-05-26 00:16:33

标签: ios swift collectionview

我已经检查过,在stackoverflow上尝试了很多解决方案,并从我搜索的许多网站上尝试过。

我的问题:我在表格视图单元格中有一个集合视图。我的数据必须在表视图中加载一次(viewdidload)。

当我将数据传递到表格单元格内的集合视图时,它不会出现,因为我需要重新加载集合视图。

所以我这样做:数据 - >表格视图中的cellforrow - >传递到集合视图 - > cell.collectionView.reloadData()

这导致滚动性能出现问题:我滚动时一遍又一遍地调用collectionView.reloadData()(这是因为表视图的可恢复单元结构。

这里是我在tableView的cellforrow中的代码:

let cell = tableView.dequeueReusableCell(withIdentifier: SubCategoryCellID) as! SubCategoryCell
        if isFetched {
            cell.shimmeringView.isShimmering = false
            cell.shimmeringImageView.isHidden = true
            cell.shimmeringView.isHidden = true
            cell.listLocation = nestedSubLocation[indexPath.item]
            cell.collectionView.reloadData()
        }else {
            return cell
        }

我试过的解决方案: +创建静态单元格并获取要在cellForRow中显示的单元格(它完全修复了滚动性能,但我认为它对内存管理不利,如果父级是集合视图则不起作用)。  +滚动停止时重新加载数据:如果我不重新加载,它仍然需要在第一次加载时重新加载数据和错误数据。

要解决这个问题,任何人都有一个聪明的方法来修复滚动性能?

1 个答案:

答案 0 :(得分:2)

将此代码放在cell.collectionView.reloadData()

之后
cell.collectionView.scrollRectToVisible(CGRect.zero, animated: false)