我已经检查,尝试了很多解决方案在stackoverflow和从我搜索的很多网站。收藏查看表内视图单元格慢速滚动性能
我的问题:我有一个表视图单元格内的集合视图。我的数据必须在表格视图(viewdidload)中加载1次。
当我将数据传递给表格单元格内的集合视图时,它不会显示,因为我需要重新加载集合视图。
所以我做的:数据 - >内表视图的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显示(这是完全固定的滚动性能,但我认为这不利于内存管理,如果父母是集合视图它不工作)。 +滚动停止时重新加载数据:如果我不重新加载,它仍然需要在第一次加载时重新加载数据并且错误数据。
为了解决这个问题,任何人有一个聪明的办法来解决滚动性能?
的最佳解决方案,您能解释一下这实际上是如何工作的? – inokey
@inokey此方法滚动内容视图,以便由rect定义的区域在滚动视图内可见。如果该区域已经可见,则该方法什么也不做。 [参考这个(https://developer.apple.com/documentation/uikit/uiscrollview/1619439-scrollrecttovisible?language=objc) – Bala
我已经试过您的解决方案,但它只能在模拟器除去滞后。测试设备仍然无法快速处理。但是我的问题在收集视图内部深处,当构建单元本身时,所以我想你的解决方案适用于大多数轻量级情况。谢谢回复! – inokey