Quindi quello che essenzialmente serve è quello di ottenere la cellula dal gesto di scorrimento sul tavolo? Giusto. Non è necessario conoscere lo indexPath
. Prima di definire colpo sul tableView
in questo modo -
UISwipeGestureRecognizer *showExtrasSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(cellSwipe:)];
showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionRight;
[tableView addGestureRecognizer:showExtrasSwipe];
[showExtrasSwipe release];
Dopo questo, quando il colpo reale accade è necessario mettere gestore per esso. Per questo provare questo-
-(void)cellSwipe:(UISwipeGestureRecognizer *)gesture
{
CGPoint location = [gesture locationInView:tableView];
NSIndexPath *swipedIndexPath = [tableView indexPathForRowAtPoint:location];
UITableViewCell *swipedCell = [tableView cellForRowAtIndexPath:swipedIndexPath];
//Your own code...
}
Allora, cosa che abbiamo fatto è prima allegare un SwipeGestureRecognizer
al UITableView
(non il UITableViewCell
). Dopodiché, quando si verifica lo scorrimento su UITableView
, innanzitutto ottengo le coordinate di dove si è verificato il gesto nello UITableView
. Successivamente, usando queste coordinate ottengo il IndexPath
della riga di dove si è verificato lo swipe nello UITableView
. Finalmente usando lo IndexPath
ottengo il UITableViewCell
. Semplicemente ..
Nota: Mi è stato chiesto fin troppo troppe volte. Quindi aggiungendo questa spiegazione del motivo per cui ho usato SwipeGestureRecognizer
su UITableView
e non su ogni singolo UITableViewCell
.
Potrei aver allegato SwipeGestureRecognizer
a ogni UITableViewCell
. Non l'ho fatto poiché avrei dovuto allegare uno SwipeGestureRecognizer
separato per ogni cella. Quindi, se avessi 1000 celle nel mio UITableView
, avrei dovuto creare 1000 oggetti SwipeGestureRecognizer
. Questo non è buono. Nel mio approccio sopra ho appena creato uno SwipeGestureRecognizer
e questo è tutto.
fonte
2011-08-22 08:23:48
Grazie mille ... Ha funzionato. –
ovviamente lo ha fatto. Questo particolare codice ha già visto milioni di colpi! –
Penso che sia necessario modificare pinchedIndexPath su swipedIndexPath – DenTheMan