如何重新加载 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】:

使用UITableViewindexPath.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 的大小?

UIWebView 完成加载后,如何强制重新布局 UITableViewCell?

如何从自定义 UITableViewCell 调用操作以重新加载 tableView