How can i find indexPath
for cell
in the middle of UICollectionView
?
I have horizontal scrolling and only one big cell
is visible (partially two other cell
s on the sides are visible as well). I need to delete cell
located in the center (means - current cell
) without touching it.
Only pressing "Trash" button and confirm Delete. But now it delete only first cell
s.
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex == actionSheet.destructiveButtonIndex) { initialPinchPoint = ???????? self.tappedCellPath = [self.collectionView indexPathForItemAtPoint:initialPinchPoint]; Technique *technique = [arrayOfTechnique objectAtIndex:self.tappedCellPath.row]; [self deleteData:[NSString stringWithFormat:@"DELETE FROM TECHNIQUES WHERE TECHNIQUENAME IS '%s'",[technique.techniquename UTF8String]]]; [arrayOfTechnique removeObjectAtIndex:self.tappedCellPath.row]; //[arrayOfTechnique removeObjectAtIndex:[custom_layout ]]; [self removeImage:technique.techniquename]; [self.collectionView performBatchUpdates:^{ [self.collectionView deleteItemsAtIndexPaths:[NSArrayarrayWithObject:self.tappedCellPath]]; } completion:nil]; [self checkArrayCount]; } }
add an 'indexPath` property to the custom table cell. initialize it in cellForRowAtIndexPath. move the tap handler from the view controller to the cell implementation. use the delegation pattern to notify the view controller about the tap event, passing the index path.
To create an IndexPath in objective C we can use. NSIndexPath *myIP = [NSIndexPath indexPathForRow: 5 inSection: 2] ; To create an IndexPath in Swift we can use.
Like you did yourself, indexPathForItemAtPoint
is a good way of finding the index path of the element you're interested in. If your question is: how do i know the coordinates of this point? Then you should try with (using the same name you gave it in your code snippet):
initialPinchPoint = CGPointMake(self.collectionView.center.x + self.collectionView.contentOffset.x, self.collectionView.center.y + self.collectionView.contentOffset.y);
Here's what I did in Swift 3
private func findCenterIndex() { let center = self.view.convert(self.collectionView.center, to: self.collectionView) let index = collectionView!.indexPathForItem(at: center) print(index ?? "index not found") }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With