2012-12-04 18 views
6

tu jest mój błąd:awaria UICollectionView Assertion w deleteItemsAtIndexPaths

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

Dzwonię to tak:

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

Dlaczego tak się dzieje, jakieś pomysły?

+0

Masz jakieś rozwiązanie? – CRDave

Odpowiedz

7

Czy usuwasz również przedmiot ze swojego modelu? Na przykład, jeśli liczba wierszy, sekcji i treści, które prezentują, jest pobierana ze słownika tablic, których klawisze reprezentują sekcje i każdą tablicę w wierszach, a następnie jeśli usuniesz jeden wiersz z deleteItemsAtIndexPaths, musisz zaktualizować słownik odpowiednio. UICollectionView nie zrobi tego za Ciebie.

+0

W moim przypadku * nie aktualizowanie * modelu * przed * "deleteItemAtIndexPath" był * powodem błędu * –

+0

to działało dla mnie. powinien zostać oznaczony jako rozwiązanie – stanley

5

pamiętać, że starają się usunąć indeks 1 z sekcji 1. Zarówno indeks i odcinek zaczyna się od 0.

zrobiłem to tak:

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

Sprawdź, czy widok kolekcja nie jest zajęty z czymś innym, gdy wywołasz metodę deleteItemsAtIndexPaths:. Doświadczyłem tego samego problemu z metodą insertItemsAtIndexPaths: i okazało się, że było to spowodowane przez błąd w moim kodzie - nazwałem [myCollectionView insertItemsAtIndexPaths:] zaraz po wywołaniu [my collectionView reloadData]. Tak więc w momencie wywoływania metody insertItemsAtIndexPaths: mój widok kolekcji przeładował dane. Po naprawieniu tego błędu, problem z brakiem asercji już minął.

Powiązane problemy