我想實現與IGListKit的集合視圖。它可以有一個或三個部分。數據源實時填充,因此需要在新數據可用時刷新內容。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)
沒有運氣,因爲它只刷新我的數據源,而不是數據源內的項目。
我然後試圖創建節控制器,其將顯示每個部分與一個小區。該單元格將包含一個IGListCollectionView
,並將照顧顯示items
,但與此我沒有運氣,儘管第二節控制器接收它從不顯示單元格的對象。
我現在不知道我怎麼可以顯示三個不同的部分使用相同類型的細胞與IGListKit,由具有部分的靜態和動態的項目有點掙扎。我正在考慮創建三個IGListCollectionView
並在它們之間設置底部/頂部約束,但我對這樣做的可能性有一些懷疑。
我想知道,如果有人碰到類似的問題已經來到和/或如果從IGListKit的傢伙可以給我一個什麼樣的解決,最好執行一些提示?