Так что же вам нужно, чтобы получить ячейку от жеста на столе?Точно. Вам не нужно знать indexPath
.Сначала определите смахивание на tableView
следующим образом -
UISwipeGestureRecognizer *showExtrasSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(cellSwipe:)];
showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionRight;
[tableView addGestureRecognizer:showExtrasSwipe];
[showExtrasSwipe release];
После этого, когда произойдет фактическое смахивание, вам нужно добавить обработчик.Для этого попробуйте это -
-(void)cellSwipe:(UISwipeGestureRecognizer *)gesture
{
CGPoint location = [gesture locationInView:tableView];
NSIndexPath *swipedIndexPath = [tableView indexPathForRowAtPoint:location];
UITableViewCell *swipedCell = [tableView cellForRowAtIndexPath:swipedIndexPath];
//Your own code...
}
Итак, что мы сделали, это сначала прикрепили SwipeGestureRecognizer
к UITableView
(не UITableViewCell
).После этого, когда происходит прокрутка на UITableView
, я сначала получаю координаты того, где произошел жест в UITableView
.Затем, используя эти координаты, я получаю IndexPath
строки, где произошел удар в UITableView
.Наконец, используя IndexPath
, я получаю UITableViewCell
.Просто на самом деле ..
Примечание: Меня спрашивали об этом слишком много раз.Поэтому, добавив объяснение, почему я использовал SwipeGestureRecognizer
на UITableView
, а не на каждом UITableViewCell
.
, я мог бы прикрепить SwipeGestureRecognizer
к каждому UITableViewCell
.Я этого не делал, поскольку мне пришлось бы прикрепить отдельный SwipeGestureRecognizer
для каждой ячейки.Таким образом, если бы у меня было 1000 ячеек в UITableView
, мне пришлось бы создавать 1000 SwipeGestureRecognizer
объектов.Это не хорошо.В моем вышеупомянутом подходе я просто создаю один SwipeGestureRecognizer
и все.