Ответ 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
и это он.