2017-05-26 27 views
2

我已经检查,尝试了很多解决方案在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显示(这是完全固定的滚动性能,但我认为这不利于内存管理,如果父母是集合视图它不工作)。 +滚动停止时重新加载数据:如果我不重新加载,它仍然需要在第一次加载时重新加载数据并且错误数据。

为了解决这个问题,任何人有一个聪明的办法来解决滚动性能?

回答

2

将这个代码后cell.collectionView.reloadData()

cell.collectionView.scrollRectToVisible(CGRect.zero, animated: false) 
+0

的最佳解决方案,您能解释一下这实际上是如何工作的? – inokey

+0

@inokey此方法滚动内容视图,以便由rect定义的区域在滚动视图内可见。如果该区域已经可见,则该方法什么也不做。 [参考这个(https://developer.apple.com/documentation/uikit/uiscrollview/1619439-scrollrecttovisible?language=objc) – Bala

+0

我已经试过您的解决方案,但它只能在模拟器除去滞后。测试设备仍然无法快速处理。但是我的问题在收集视图内部深处,当构建单元本身时,所以我想你的解决方案适用于大多数轻量级情况。谢谢回复! – inokey

相关问题