Ich versuche, eine Sammlungsansicht mit IGListKit zu implementieren. Es kann entweder einen oder drei Abschnitte haben. Die Datenquelle wird in Echtzeit ausgefüllt und muss daher den Inhalt aktualisieren, wenn neue Daten verfügbar sind.IGListKit mit Abschnitten und mehreren Elementen
so zu tun, ich habe ein Datasource-Objekt erstellt IGListDiffable
entspricht, die jeden Abschnitt als solche darstellen:
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
}
}
In jedem Abschnitt, würde ich eine Liste von items
angezeigt werden mag. Ich habe es geschafft, den Abschnitt zu erstellen, indem ich den gleichen Abschnitt-Controller wiederverwendete, aber die einzige Möglichkeit, ein neues Ergebnis einzufügen, war, auf dem Adapter reloadData()
aufzurufen. Das ist ziemlich schlecht, da es die komplette Liste der Elemente (die möglicherweise sehr lang sein können,> 50 Elemente) neu lädt. Es gibt auch keine Möglichkeit, das Einfügen neuer Artikel zu animieren. Ich habe auch versucht, eine adapter.performUpdates(animated: true)
ohne Glück zu tun, wie es nur meine Datenquelle aber nicht die Einzelteile innerhalb der Datenquelle erneuern.
Ich habe dann versucht, einen Abschnitt Controller erstellen, die jeden Abschnitt mit einer Zelle anzeigen wird. Die Zelle würde eine IGListCollectionView
enthalten und würde sich um die Anzeige der items
kümmern, aber damit hatte ich kein Glück, und obwohl der zweite Abschnitt Controller die Objekte empfängt, zeigt er nie die Zellen an.
Ich bin ein bisschen kämpfen jetzt und nicht sicher, wie ich drei verschiedene Abschnitte anzeigen könnte, die den gleichen Typ von Zellen mit IGListKit verwenden, indem Sie die Abschnitte statisch und die Elemente dynamisch haben. Ich denke darüber nach, drei IGListCollectionView
zu erstellen und bottom/top constraints zwischen ihnen einzurichten, aber ich habe einige Zweifel an der Möglichkeit, das zu tun.
Ich frage mich, ob jemand schon auf ein ähnliches Problem gestoßen ist und/oder ob die Jungs von IGListKit mir ein paar Tipps geben könnten, was die beste Implementierung ist, um das zu lösen?