Получение индекса пути к ячейке при жесте смахивания UITableView - PullRequest
18 голосов
/ 22 августа 2011

Я делаю жест смахивания на UITableView и хочу узнать указатель пути к ячейке, в которой находятся мои пальцы, т.е. смахивание, выполненное с какой ячейки.информация для выбранной ячейки ..

Заранее спасибо ..

Ответы [ 3 ]

53 голосов
/ 22 августа 2011

Так что же вам нужно, чтобы получить ячейку от жеста на столе?Точно. Вам не нужно знать 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 и все.

0 голосов
/ 22 августа 2011

Если вы пытаетесь внедрить «swipe to delete» (смахивание в горизонтальном направлении), вам не нужно заново изобретать колесо.Просто раскомментируйте метод commitEditingStyle:forRowAtIndexPath: в вашем UITableViewController делегате.

0 голосов
/ 22 августа 2011

Вы проверяли этот исходный код? : https://github.com/thermogl/TISwipeableTableView

Это действительно может вам помочь, это полная реализация «смахиваемой» таблицы ...

...