Eliminando celdas seleccionadas en uicollectionview

He colocado un button dentro de uicollectionviewcell y cuando se presiona ese button, está progtwigndo la celda como seleccionada.

- (void) deleteItem:(id)sender { self.selected = YES; [self.cellOptionsDelegate deleteItem]; } 

A continuación, delega en uicollectionviewcontroller para eliminar el elemento que está seleccionado.

 - (void) deleteItem { NSArray* selectedItemsIndexPaths = [self.collectionView indexPathsForSelectedItems]; // Delete the items from the data source. [self.taskArray removeObjectAtIndex:[[selectedItemsIndexPaths objectAtIndex:0] row]]; // Now delete the items from the collection view. [self.collectionView deleteItemsAtIndexPaths:selectedItemsIndexPaths]; } 

Sin embargo, cuando obtengo los elementos seleccionados utilizando el método uicollectionview indexPathsForSelectedItems, no veo que he seleccionado el elemento y la list está vacía. Estoy usando la prensa para seleccionar el método de delegado para otra funcionalidad, así que esperaba hacer algo similar a lo que expliqué anteriormente. ¿Hay alguna manera de hacer que esto funcione o una mejor manera de informar al controller que el button presionado en la celda estaba atado a una celda en una ruta de índice específica?

Gracias.

Simplemente envíe un puntero de celda desde el método deleteItem de su celda

 - (void) deleteItem:(id)sender { self.selected = YES; [self.cellOptionsDelegate deleteItem:self]; } 

y cambiar el método uicollectionviewcontroller para

 - (void) deleteItem:(UICollectionViewCell*)cellToDelete { NSIndexPath indexPathToDelete = [self indexPathForCell: cellToDelete]; // Delete the items from the data source. [self.taskArray removeObjectAtIndex:[indexPathToDelete row]]; // Now delete the items from the collection view. [self.collectionView deleteItemsAtIndexPaths:@[indexPathToDelete]]; } 

No olvide actualizar '(void) deleteItem: (UICollectionViewCell *) cellToDelete' en su file * .h.

Resuelto enviando la celda a través del método de delegado y usando esto:

  NSIndexPath* indexPath = [self.collectionView indexPathForCell:cell]; 

animado:

 [self.collectionView performBatchUpdates:^ { [_array removeObject:file]; [self.collectionView deleteItemsAtIndexPaths:@[indexPath]]; } completion:nil];