在表格视图单元格内重新加载数据集合视图(Swift)

3
我在一个表视图单元格内使用了嵌套的集合视图,但遇到了一个问题。这个内容是从在线数据库上传的,获取数据需要一段时间。我的问题是如何保持重新加载集合视图的数据,直到从在线数据库中获取到数据并显示出来。
class DiscoverViewCell: UITableViewCell {
    @IBOutlet weak var categoryLabel: UILabel!
    @IBOutlet weak var _collectionView: UICollectionView!
    @IBAction func seeMoreAction(_ sender: Any) {
    }

}
class MovieCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var moviePicture: UIImageView!
    @IBOutlet weak var movieTitleLabel: UILabel!
    func updateCollectionCell(movie: MovieModel){
        moviePicture.image = movie.poster
        movieTitleLabel.text = movie.name
    }

}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MovieCell", for: indexPath) as? MovieCollectionViewCell else {
        return UICollectionViewCell()
    }

    cell.updateCollectionCell(movie: movieArray[indexPath.item])
    return cell
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "DiscoverCell") as? DiscoverViewCell else {
        return UITableViewCell()
    }

    cell.categoryLabel.text = categories[indexPath.item]
    setUpCell(cell)
    return cell
}

此外,如何在表视图单元格内根据每个表视图单元格中但与集合视图分开的标签显示不同的集合视图内容。 此处是Storyboard
1个回答

0

解决这个问题的最佳方法是将确定数据是否已经被检索或正在从外部源中检索数据的所有逻辑都包含在用于封装集合视图中呈现的所有数据的模型中。

因此,如果您有一个tableViewCell的模型,并且有一个嵌套的collectionView的模型,我个人会在这个collectionViewModel中添加一个枚举,用于确定特定UICollectionView的当前状态。例如,如果UITableView有许多单元格,并且用户正在快速滚动它们,每次tableViewCell被出列时,状态将用于确定单元格是否应该显示旋转器,还是应该呈现先前检索到的数据(加载中 vs 已加载)。


1
我成功解决了这个问题,方法是将每个集合视图的标记标记为indexPath.item,然后检查每个标记并显示所需的信息。 - Andrei Enache
@AndreiEnache 很高兴听到你解决了它!肯定要研究一下我提到的方法;这是一个很好的练习,可以学习一种不同的处理方式。 - Jay
我在这里遇到了类似的问题。有人可以在这里分享一些逻辑吗? - PoolHallJunkie
@PoolHallJunkie 为什么不发表你的代码呢? - Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接