Ios Swift:我可以在集合/表格视图单元格中加载Url数据吗?

Ios Swift:我可以在集合/表格视图单元格中加载Url数据吗?,ios,swift,uitableview,Ios,Swift,Uitableview,我在UITableView单元格中有一个水平滚动的集合视图,实现了与Netflix相同的视图 目前,我正在将URL数据加载到包含表视图的视图控制器中,并在包含collectionView的UITableViewCell中传递数据数组,然后呈现集合视图单元格。 但我觉得使用这种方法缺乏控制。例如,UI管理、隐藏、根据URL数据加载和错误显示视图等 我试着在表视图单元格中加载URL数据,这很有效 对我来说很好,但我认为这样做不合适,因为 只有控制器才能控制一切 我用于在控制器中加载数据的闭包是- p

我在UITableView单元格中有一个水平滚动的集合视图,实现了与Netflix相同的视图

目前,我正在将URL数据加载到包含表视图的视图控制器中,并在包含collectionView的UITableViewCell中传递数据数组,然后呈现集合视图单元格。

但我觉得使用这种方法缺乏控制。例如,UI管理、隐藏、根据URL数据加载和错误显示视图等

我试着在表视图单元格中加载URL数据,这很有效 对我来说很好,但我认为这样做不合适,因为 只有控制器才能控制一切

我用于在控制器中加载数据的闭包是-

private func fetchData() {
    let id = UserDefaults.standard.getUserId()
    Service.shared.fetch(userId: id) { (data, error) in
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.5, execute: {
            guard error == nil else {
                print(error?.localizedDescription ?? "Error")
                return
            }
            let result = data?.count != 0 ? "Success" : "Failure"

            switch result {
            case ResultType.Failure.rawValue:
                print("Failure")
            case ResultType.Success.rawValue:
                if let data = data {
                    self.data = data
                }
            default: break
            }
        })
    }
}
回到问题上来,将数据加载到内部是否合适 UITableViewCell,以便在该UITableViewCell内隐藏/显示UICollectionView或设置其动画

此外,假设我必须加载4-5个URL数据,并在每个自定义表视图单元格中呈现它们,这些单元格可能包含也可能不包含集合视图


复杂

可以在视图中加载数据,但这不是一个好的体系结构。它妨碍了可重用性,并混淆了责任。此外,表视图单元格将被重用,这最终会导致奇怪的数据加载行为,可能还会导致错误


我建议将数据提取加载到自定义类中,并在视图控制器中使用该类。这样,您的数据加载与控制器和视图分离,提供了最大的灵活性。

是的,在UITableViewCell中加载数据或执行一些逻辑是个坏主意。@iAction感谢您对我的帮助!