Ho una semplice applicazione basata su UICollectionView - una UICollectionView e un modello di dati basato su NSMutableArray per semplicità.Eliminazione di celle da UICollectionView tramite NSNotification
posso eliminare le cellule senza alcun problema attraverso il didSelectItemAtIndexPath: metodo delegato:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self.data removeObjectAtIndex:[indexPath row]];
[self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
}
Tuttavia, sto cercando di aggiungere un opzione di eliminazione tramite un UIMenuController
in una sottoclasse UICollectionViewCell
che viene attivato tramite un UILongPressGestureRecognizer
che tutto funziona benissimo e mi attivano con successo un NSNotification
-(void)delete:(id)sender{
NSLog(@"Sending deleteme message");
[[NSNotificationCenter defaultCenter] postNotificationName:@"DeleteMe!" object:self userInfo:nil];
}
prendo nella mia ViewController e chiamare il metodo seguente:
-(void)deleteCell:(NSNotification*)note{
MyCollectionViewCell *cell = [note object];
NSIndexPath *path = nil;
if((path = [self.collectionView indexPathForCell:cell]) != nil){
[self.data removeObjectAtIndex:[path row]];
[self.collectionView deleteItemsAtIndexPaths:@[path]];
}
}
E si blocca sui deleteItemsAtIndexPaths: chiamare
-[UICollectionViewUpdateItem action]: unrecognized selector sent to instance 0xee7eb10
Ho controllato tutto evidente - come l'oggetto dalla NSNotification e indexPath creata dalla indexPathForCell: chiamata e tutto sembra tutto bene. Sembra che sto chiamando deleteItemsAtIndexPath: con le stesse informazioni in entrambe le posizioni, ma per qualche motivo fallisce quando passa attraverso la route di notifica.
Si tratta di informazioni presso l'indirizzo indicato nella errore:
(lldb) po 0xee7eb10
(int) $1 = 250080016 <UICollectionViewUpdateItem: 0xee7eb10> index path before update (<NSIndexPath 0x9283a20> 2 indexes [0, 0]) index path after update ((null)) action (delete)
Forse il percorso dell'indice dopo l'aggiornamento essere nulla è significativo ...
Tutte le idee?
In 'deleteCell:' 'si utilizza self.collectionViewOne' e' self.collectionView' - è di proposito? –
scusa - era un errore di battitura. – melps
Posso confermare che ciò accade anche quando si inseriscono nuovi elementi da una notifica. – Brett