Excluindo células do UICollectionView via NSNotification
Eu tenho um aplicativo baseado em UICollectionView simples - um UICollectionView e um modelo de dados baseado em NSMutableArray para simplificar.
Eu posso excluir células sem problemas através do método didSelectItemAtIndexPath: delegate:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self.data removeObjectAtIndex:[indexPath row]];
[self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
}
No entanto, estou tentando adicionar uma opção de exclusão através de umUIMenuController
em umUICollectionViewCell
subclasse que é desencadeada através de umUILongPressGestureRecognizer
que tudo funciona bem e eu consigo disparar com sucessoNSNotification
-(void)delete:(id)sender{
NSLog(@"Sending deleteme message");
[[NSNotificationCenter defaultCenter] postNotificationName:@"DeleteMe!" object:self userInfo:nil];
}
Eu pego no meu ViewController e chamo o seguinte método:
-(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 ele falha no deleteItemsAtIndexPaths: call
-[UICollectionViewUpdateItem action]: unrecognized selector sent to instance 0xee7eb10
Eu verifiquei tudo óbvio - como o objeto do NSNotification e o indexPath criado a partir do indexPathForCell: chamar e tudo parece totalmente bem. Parece que estou chamando deleteItemsAtIndexPath: com as mesmas informações nos dois locais, mas, por algum motivo, falha quando passa pela rota de notificação.
Esta é a informação no endereço indicado no erro:
(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)
Talvez o caminho do índice após a atualização ser nulo seja significativo ...
Alguma ideia?