如何重新加载 uitableviewcell 内的集合视图
Posted
技术标签:
【中文标题】如何重新加载 uitableviewcell 内的集合视图【英文标题】:how to reload a collectionview that is inside a tableviewcell 【发布时间】:2016-02-25 08:20:48 【问题描述】:我在 tableViewCell 中有一个 collectionView
例如: 信用:How to use StoryBoard quick build a collectionView inside UITableViewCell
我想在更新信息时重新加载collectionView。
我已经在 collectionView 的 cellForItemAtIndexPath 中打印了一个打印件来测试它是否被调用,但它不是。如何让 collectionView 重新加载?
【问题讨论】:
我投票结束这个问题作为离题,因为它不是真正的问题,因为“我只需要调用 cell.collectionView.reloadData()” 【参考方案1】:我知道怎么做!在我的 tableViewCell 类中,我只需要将 collectionView 链接为一个出口,所以在我的 tableViewCell 的cellForRowAtIndexPath
中,我只需要调用cell.collectionView.reloadData()
【讨论】:
添加 cell.collectionView.reloadData() 后,CollectionView 滚动在我的项目中非常慢。如何解决这种问题。 我也面临同样的问题。我们如何解决滚动缓慢的问题? 在集合视图上尝试以下操作 - invalidateLayout 和 layoutIfNeeded【参考方案2】:最简单的方法
for cell in tableView.visibleCells
(cell as? YourTableViewCell)?.collectionView.reloadData()
或者
如果需要重新加载具体UICollectionView
if let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as? YourTableViewCell
cell.collectionView.reloadData()
【讨论】:
【参考方案3】:使用UITableView
的indexPath.row
为集合视图创建标签,并使用标签创建UICollectionView
的实例并重新加载!
【讨论】:
【参考方案4】:第一个在 tableview 单元格上创建这个函数:
func collectionReloadData()
DispatchQueue.main.async(execute:
self.collectionView.reloadData()
)
然后从
调用它func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell ...
cell.collectionReloadData()
【讨论】:
以上是关于如何重新加载 uitableviewcell 内的集合视图的主要内容,如果未能解决你的问题,请参考以下文章
下载来自 url 的数据时,重新加载 uitableviewcell 内的 Collection 视图
UITableViewCell 内的 UIImageView 旋转动画
出队时如何阻止`UITableViewCell`中的`UIWebView`重新加载?
如何使用 Swift 从 UITableViewCell 内的 NIB 调整自定义 UIView 的大小?