J'ai une vue de collection et j'ai essayé de supprimer une cellule de la vue de collection sur la méthode didSelect.J'ai réussi en utilisant la méthode suivante
[colleVIew deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
Mais maintenant, je dois supprimer l'élément sur le clic de bouton de CollectionView Cell.Ici, je ne reçois que le indexpath.row. De cela, je ne suis pas en mesure de supprimer l'élément. J'ai essayé comme ça.
-(void)remove:(int)i {
NSLog(@"index path%d",i);
[array removeObjectAtIndex:i];
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:i inSection:0];
[colleVIew deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
[colleVIew reloadData];
}
Mais il doit recharger CollectionView, de sorte que l'animation de l'arrangement des cellules après la suppression n'est pas là. Veuillez suggérer une idée ... merci à l'avance
-(void)remove:(int)i {
[self.collectionObj performBatchUpdates:^{
[array removeObjectAtIndex:i];
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:i inSection:0];
[self.collectionObj deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
} completion:^(BOOL finished) {
}];
}
Essaye ça. Cela peut fonctionner pour vous.
Solution Swift 3:
func remove(_ i: Int) {
myObjectsList.remove(at: i)
let indexPath = IndexPath(row: i, section: 0)
self.collectionView.performBatchUpdates({
self.collectionView.deleteItems(at: [indexPath])
}) { (finished) in
self.collectionView.reloadItems(at: self.collectionView.indexPathsForVisibleItems)
}
}
et exemple supprimer l'appel:
self.remove(indexPath.row)
Swift 3:
func remove(index: Int) {
myObjectList.remove(at: index)
let indexPath = IndexPath(row: index, section: 0)
collectionView.performBatchUpdates({
self.collectionView.deleteItems(at: [indexPath])
}, completion: {
(finished: Bool) in
self.collectionView.reloadItems(at: self.collectionView.indexPathsForVisibleItems)
})
}
[array removeObjectAtIndex:[indexPath row]];
[collection reloadData]; // Collection is UICollectionView
Essaye ça.
[array removeObjectAtIndex:[indexPath row]];
[self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
Normalement c'est ok ... Vous pouvez voir ce post , il traite du même sujet.
J'ai la réponse ..
Créer un bouton dans UICollectionViewCell // Je l'ai nommé comme supprimer Btn
Puis dans CollectionView Delegate
- cellForItemAtIndexPath
[cell.removeBtn addTarget:self action:@selector(RemovePrssd:) forControlEvents:UIControlEventTouchUpInside];
Ajoutez ensuite la méthode
-(void)RemovePrssd:(id)sender{
UIView *senderButton = (UIView*) sender;
NSIndexPath *indexPath = [colleVIew indexPathForCell: (UICollectionViewCell *)[[senderButton superview]superview]];
[array removeObjectAtIndex:indexPath.row];
[colleVIew deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
}