no UICollectionViewLayoutAttributes-Instanz für -layoutAttributesForSupplementaryElementOfKind:

Der Titel ist der Fehler, den ich erhalte, und ich habe keine Ahnung warum, aber hier sind einige Informationen, damit mich hoffentlich jemand hier aufklären kann.

Ich habe @ untergeordnUICollectionViewFlowLayout da ich dadurch die Frames für die Zelle selbst berechnen muss (vielleicht ist das ein Problem?) inprepareLayout. Ich benutze dann dasUICollectionViewLayoutAttributes informationen zur berechnung einer ergänzenden ansicht, die darüber liegt, bekomme ich das layout, das ich mir wünsche.

Ich benutzeperformBatchUpdates:completion:, um die Ansicht hinzuzufügen, zu entfernen und zu aktualisieren. Das Einfügen funktioniert einwandfrei. Das Löschen von Elementen erfolgt jedoch, wenn der im Titel angegebene Fehler auftritt.

So weiß ich, warum der Fehler passiert, aber ich weiß nicht warum sollte es überhaupt passieren. Um dies anhand eines Beispiels zu verdeutlichen, das ein Szenario durchläuft, das das Problem verursacht,

Beginnen Sie mit 1 Artikel mit 1 zusätzlichen Ansicht 1 AbschnittZwei weitere Elemente hinzufügen prepareLayout sieht 3 Elemente mit 3 zusätzlichen Ansichten)Element löschen prepareLayout sieht 2 Ansichten mit 2 zusätzlichen Ansichten)layoutAttributesForSupplementaryViewOfKind:atIndexPath: heißt nach Attributen für den Indexpfad fragen mitsection: 0 und item: 2Crash, weil es nach Attributen für eine dritte Zusatzansicht gefragt hat, obwohl es zuvor "Layout vorbereiten" genannt hat und 2 Elemente und 2 Zusatzansichten eingerichtet hat Throw Hände hoch in Resignation und Verzweiflung

so die beleidigende Funktion, so weit ich das beurteilen kann, ist:

- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
{
    return self.layoutInfo[elementKind][indexPath];
}

, das natürlich durch die interne Vernetzung von @ automagisch aufgerufen wiUICollectionView Also habe ich keine Ahnung, warum er diese zusätzliche Ansicht bei diesem Indexpfad anfordert.

Hat jemand irgendwelche Ideen? Vielleicht ist es, wie ich benutzeperformBatchUpdates:completion:, aber das Löschen funktionierte einwandfrei, bis zusätzliche Ansichten hinzugefügt wurden. Ich kann bei Bedarf weitere Codes / Erklärungen bereitstellen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage