2014-06-30 4 views
8

Ricevo un'asserzione durante l'eliminazione di un singolo UICollecitonViewCell da UICollectionView.Come eliminare l'unica cella da UICollectionView con animazione (deleteItemsAtIndexPaths)?

Prerequisito: ho una singola cella (quando ho due o più celle, la cancellazione funziona correttamente).

Ecco il codice:

NSIndexPath *ip = [_photosCollectionView indexPathForCell:cell]; 

    [_datasource removeItemAtIndex:ip.item]; 

    [_photosCollectionView deleteItemsAtIndexPaths:@[ip]]; // the assertion is raised 

Ecco il testo asserzione:

NSInternalInconsistencyException: attempt to delete item 0 from section 0 which only contains 0 items before the update 

abbastanza strano problema, perché funziona per 2, 3 o più celle, ma quando ho cancellare un singolo cellula, fallisce.

Qualche idea cosa non va, come risolvere questo problema?

risposta

11

Grazie a simili domande e risposte su SO, hanno trovato una soluzione per utilizzare performBatchUpdates:

[_photosCollectionView performBatchUpdates:^ { 
    [_datasource removeItemAtIndex:ip.item]; 
    [_photosCollectionView deleteItemsAtIndexPaths:@[ip]]; // no assertion now 
} completion:nil];