IGListKit 处理对象数组来为它们创建必要的部分。我不会将所有网络放在 UIViewController 类中,而是 -ListAdapterDataSource
为您的特定任务创建一个子类,它将执行 3 个不同的网络请求。
在他们每个人的回调中,您会将结果附加到ListDiffable
数组中:
var users: [ListDiffable] = [] {
didSet {
update()
}
}
private func update() {
DispatchQueue.main.async { [weak self] in
self?.adapter.performUpdates(animated: true, completion: { _ in
self?.loading = false
})
}
}
以这种方式调用performUpdates
可确保 IGListKit 使用它的智能差异算法来仅更改/添加最近添加的单元格,保持已显示完整且不影响性能。您可以在协议的func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController
方法中为部分/单元格设置不同的类ListAdapterDataSource