我正在UITableView
上执行滑动手势,并想知道当前我的手指滑动到了哪个单元格,也就是我从哪个单元格进行了滑动手势。
我需要indexPath
,因为我要显示所选单元格的信息。
提前感谢。
我正在UITableView
上执行滑动手势,并想知道当前我的手指滑动到了哪个单元格,也就是我从哪个单元格进行了滑动手势。
我需要indexPath
,因为我要显示所选单元格的信息。
提前感谢。
所以你实际上需要做的是从表格中获取滑动手势所在的单元格? 对。你不需要知道 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
中手势发生的坐标。接下来,使用这些坐标我可以获取在UITableView
中发生滑动的行的IndexPath
。最后,使用IndexPath
来获取UITableViewCell
。很简单吧...UITableView
上使用了SwipeGestureRecognizer
而不是在每个UITableViewCell
上使用。SwipeGestureRecognizer
附加到每个UITableViewCell
上。但我没有这样做,因为我会必须为每个单元格附加单独的SwipeGestureRecognizer
。如果我的UITableView
中有1000个单元格,那么我将不得不创建1000个SwipeGestureRecognizer
对象。这不好。在上述方法中,我只创建了一个SwipeGestureRecognizer
,就这样。如果您正在尝试实现“滑动删除”(水平方向滑动),则无需重新发明轮子。只需取消注释UITableViewController
委托中的commitEditingStyle:forRowAtIndexPath:
方法即可。