下载来自 url 的数据时,重新加载 uitableviewcell 内的 Collection 视图

Posted

技术标签:

【中文标题】下载来自 url 的数据时,重新加载 uitableviewcell 内的 Collection 视图【英文标题】:Reload Collection view that is inside a uitableviewcell when data from a url is downloaded 【发布时间】:2016-03-14 07:49:49 【问题描述】:

所以我在表格视图单元格中有一个集合视图,没有从 url 下载表格视图类数据,假设图像已下载,然后我需要在这些集合视图单元格上显示这些图像,所以我正在做的是重新加载表视图,但集合视图没有重新加载,我需要用下载的数据重新加载那些视图

【问题讨论】:

你为什么不在 url 的图像视图上使用背景加载?喜欢 sd_webimage 库吗? 是的,我会这样做,但首先我需要获取图片的 url 列表 获取该列表后,我想将其发送到单元格并在那里重新加载集合视图,我在那里放了一个插座,但是当我尝试在其中重新加载数据时它为零 尽可能使用延迟加载developer.apple.com/library/ios/samplecode/LazyTableImages/… 从 tableview 单元的子视图中获取 Collectiview。尝试重新加载该集合视图它将起作用。 【参考方案1】:

确实很简单(假设您的 viewController、customTableViewCell 和 customCollectionViewCell 工作正常),只要您需要在表格视图单元格中重新加载 collectionView,请在您声明表格视图的控制器中使用此代码:

// 在你的视图控制器中

var myRow = 0 // set the index path row of your tableview cell
var mySection = 0 // and the index path section 

 DispatchQueue.main.async(execute: 
        if let index = IndexPath(row: myRow, section: mySection) as? IndexPath 
             if let cell = self.MyTableView.dequeueReusableCell(withIdentifier: "cell", for: index) as? MyCustomTableViewCell 
                cell.collectionReloadData()
             
       
 )

现在在您的 TableViewCell 中

class MyCustomTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout 

    @IBOutlet weak var collectionView: UICollectionView!
    func collectionReloadData()
         DispatchQueue.main.async(execute: 
            self.collectionView.reloadData()
         )
    

//Dont forget to set delegates    
    override func awakeFromNib() 
        super.awakeFromNib()
        self.collectionView.delegate = self
        self.collectionView.dataSource = self
        

这里有一个此代码的示例,第 3 节“Cartas Recomendadas”中的集合视图已重新加载:

【讨论】:

以上是关于下载来自 url 的数据时,重新加载 uitableviewcell 内的 Collection 视图的主要内容,如果未能解决你的问题,请参考以下文章

当用户选择 UITable 行时显示等待屏幕

使用下载的数据中的 iframe 组件重新加载 UIWebview

UICollectionView 在滚动时重新加载错误的图像

UICollectionView在滚动时重新加载错误的图像

从 URL 加载带有 JSON 数据的 ListView

如何在实现 UITableViewDataSource 协议的类中重新加载数据