2012-12-04 15 views
6

Hier ist mein Fehler:UICollectionView Assertionsfehler in deleteItemsAtIndexPaths

*** Assertion failure in -[PSUICollectionView _endItemAnimations], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m:2801 

ich es so nennen:

[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:1 inSection:1]]]; 

Warum ist das passiert, irgendwelche Ideen?

+0

Sie erhalten eine Lösung? – CRDave

Antwort

7

Entfernen Sie das Objekt auch aus Ihrem Modell? Wenn zum Beispiel die Anzahl der Zeilen, Abschnitte und der darin enthaltene Inhalt einem Wörterbuch von Arrays entnommen wird, deren Schlüssel die Abschnitte und jedes Array die Zeilen darstellen, dann sind Sie, wenn Sie eine Zeile mit deleteItemsAtIndexPaths löschen, für die Aktualisierung verantwortlich Wörterbuch entsprechend. UICollectionView wird es nicht für Sie tun.

+0

In meinem Fall, * nicht * das Modell aktualisieren * vor * der 'deleteItemAtIndexPath' war der * Grund für den Fehler * –

+0

das funktionierte für mich. sollte als Lösung markiert werden – stanley

5

Beachten Sie, dass Sie versuchen, Index zu löschen 1 aus dem Abschnitt 1. Sowohl Index und Abschnitt beginnt bei 0.

ich habe es wie folgt aus:

NSMutableArray *forms; // datasource item data for all the cells 
int indexToDelete; // Set to the index you want to delete 

... 

[self.collectionView performBatchUpdates:^(void){ 
    [forms removeObjectAtIndex:indexToDelete]; // First delete the item from you model 
    [self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexToDelete inSection:0]]]; 
      } completion:nil]; 
1

Überprüfen Sie, ob Ihre Sammlung Ansicht nicht besetzt ist mit etwas anderem, wenn Sie deleteItemsAtIndexPaths aufrufen:. Ich hatte das gleiche Problem mit der Methode insertItemsAtIndexPaths: method, und es stellte sich heraus, dass es durch einen Fehler in meinem Code verursacht wurde - ich rief [myCollectionView insertItemsAtIndexPaths:] sofort nach dem Aufruf von [mein collectionView reloadData]. Zum Zeitpunkt des Aufrufs von insertItemsAtIndexPaths: Meine Sammlungsansicht hat ihre Daten erneut geladen. Nachdem ich diesen Fehler behoben habe, ist das Problem mit der Assertion fehlgeschlagen.

Verwandte Themen