Подтвердить что ты не робот

Получение индексного пути ячейки на жесте салфетки UITableView

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

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

Спасибо заранее.

4b9b3361

Ответ 1

Итак, что вам по существу нужно, чтобы получить клетку от салфетки на столе? Правильно. Вам не нужно знать 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...
}

Итак, что мы сделали, сначала прикрепите a SwipeGestureRecognizer к UITableView (а не к UITableViewCell). После этого, когда салфетка появляется на UITableView, я сначала получаю координаты, где жест произошел в UITableView. Затем, используя эти координаты, я получаю indexPath строки, в которой произошел щелчок в UITableView. Наконец, используя indexPath, я получаю UITableViewCell. Простой действительно..

Примечание: Меня спрашивали слишком много раз. Поэтому добавив это объяснение, почему я использовал SwipeGestureRecognizer на UITableView, а не на каждом отдельном UITableViewCell.

Я мог бы прикрепить SwipeGestureRecognizer к каждому UITableViewCell. Я не делал этого, так как мне пришлось бы приложить отдельный SwipeGestureRecognizer для каждой ячейки. Итак, если бы у меня было 1000 ячеек в моем UITableView, мне пришлось бы создавать 1000 SwipeGestureRecognizer объектов. Это не хорошо. В моем вышеприведенном подходе я просто создаю один SwipeGestureRecognizer и это он.

Ответ 2

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

Ответ 3

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

Это действительно может помочь вам, это полная реализация табличного представления "swipeable"...