我正在尝试使用 IGListKit 实现集合视图。它可以有一个或三个部分。数据源是实时填充的,因此需要在新数据可用时刷新内容。
为此,我创建了一个符合IGListDiffable
表示每个部分的数据源对象:
final class DataSource: NSObject {
var title: String?
var items: [SJResult] = []
}
extension DataSource: IGListDiffable {
public func diffIdentifier() -> NSObjectProtocol {
return self
}
public func isEqual(toDiffableObject object: IGListDiffable?) -> Bool {
if object === self {
return true
}
guard let obj = object as? DataSource else {
return false
}
return obj.items.count == items.count
}
}
在每个部分中,我想显示一个items
. 我已经设法通过重用相同的部分控制器来创建部分,但我发现插入新结果的唯一方法是调用reloadData()
适配器。这很糟糕,因为它会重新加载完整的项目列表(可能很长,> 50 个项目)。它也不可能为新项目的插入设置动画。我也尝试过adapter.performUpdates(animated: true)
没有运气,因为它只刷新了我的数据源,而不是数据源中的项目。
然后我尝试创建一个部分控制器,它将用一个单元格显示每个部分。该单元格将包含 aIGListCollectionView
并将负责显示items
,但是我没有运气,尽管第二部分控制器接收到它从未显示单元格的对象。
我现在有点挣扎,不知道如何通过使部分静态和项目动态来显示三个使用 IGListKit 相同类型单元格的不同部分。我正在考虑创建三个IGListCollectionView
并在它们之间设置底部/顶部约束,但我对这样做的可能性有些怀疑。
我想知道是否有人已经遇到过类似的问题和/或来自 IGListKit 的人是否可以给我一些提示,告诉我解决这个问题的最佳实现是什么?