Nessun metodo delegato fornito a UICollectionViewController come UITableviewController. Possiamo farlo manualmente aggiungendo un lungo riconoscimento di gesture a UICollectionView.
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(activateDeletionMode:)];
longPress.delegate = self;
[collectionView addGestureRecognizer:longPress];
Nel metodo longGesture, aggiungere il pulsante su quella particolare cella.
- (void)activateDeletionMode:(UILongPressGestureRecognizer *)gr
{
if (gr.state == UIGestureRecognizerStateBegan) {
if (!isDeleteActive) {
NSIndexPath *indexPath = [collectionView indexPathForItemAtPoint:[gr locationInView:collectionView]];
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
deletedIndexpath = indexPath.row;
[cell addSubview:deleteButton];
[deleteButton bringSubviewToFront:collectionView];
}
}
}
Nell'ambito di tale azione pulsante,
- (void)delete:(UIButton *)sender
{
[self.arrPhotos removeObjectAtIndex:deletedIndexpath];
[deleteButton removeFromSuperview];
[collectionView reloadData];
}
penso che ti può aiutare.
In breve: Si dovrebbe seguire il protocollo MVC. Elimina i dati dal modello e quindi ricarica la vista. Per una risposta più dettagliata dovresti pubblicare il tuo codice (solo le parti in cui sospetti che il problema sia) e descrivere ciò che hai già provato ... Altrimenti tutto quello che otterrai saranno i downvotes invece di una buona risposta. Prende una buona domanda per ottenere una buona risposta. Leggere [FAQ] (http://stackoverflow.com/faq) non fa male. –