【问题标题】:UITableViewCells with UICollectionView inside Low performance (Swift)UITableViewCells 内部带有 UICollectionView 低性能(Swift)
【发布时间】:2017-11-14 01:04:14
【问题描述】:

我有一个 tableview,每个单元格中都嵌套了一个 collectionView。

tableViewCell 的数量是动态的,每个 tableViewCell 的 collectionViewCell 的数量也是动态的。

我“dequeueReusableCell”这两种单元格。

每次加载 tableViewCell 时,我都会执行 cell.collectionView.reloadData()。

当我滚动 TableView 时,它真的在抽搐。加上 viewController 需要大量加载。

我尝试将collectionView.reloadData() 移到uitableviewcell 的prepareforReuse 或willDisplayCell 中,但没有。

我发现很少有帖子问这个问题,但实际上我无法解决我的问题。

【问题讨论】:

  • 您找到解决方案了吗?

标签: ios swift uitableview uicollectionviewcell


【解决方案1】:

使用reloadData() 方法就像使用锤子一样。这要花很多钱,因为您说要重新加载所有数据。

要问自己的问题是:“我需要每次都重新加载所有数据吗?还是只需要其中的一部分?只需一行 func reloadRows(at: [IndexPath], with: UITableViewRowAnimation) ?可能只是一个部分 func reloadSections(_ sections: IndexSet, with animation: UITableViewRowAnimation)

通过这些方法,您可以降低成本并稍微加快程序速度。

【讨论】:

  • 是的,这可能是一个解决方案,但对我来说不是。我的问题是每个 tableview 行可以不同,并且重复使用单元格,每次向下滚动时,我都需要重新加载整行,这意味着重新加载 tableviewcell 内的 collectionview。 CollectionViews 可以完全不同,但它们每个都包含很少的单元格,而不是更多。想想新的 Apple Store 应用程序。每行包含一个不同的集合视图。一行的多个tableView会不会更好,所以实际上行不被重用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多