我正在UITableView
上做滑动手势,想知道我的手指当前进入的单元格的索引路径,即从哪个单元格执行滑动手势。
我需要indexPath
,因为我必须显示所选单元格的信息..
提前致谢..
答案 0 :(得分:53)
那么你真正需要的是从桌面上轻扫手势获取单元格?对。你不需要知道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
。我没有这样做,因为我不得不为每个单元格附加一个单独的UITableView
。所以如果我的SwipeGestureRecognizer
中有1000个单元格,我将不得不创建1000个SwipeGestureRecognizer
个对象。这个不好。在我的上述方法中,我只需创建一个{{1}}就可以了。
答案 1 :(得分:0)
如果您尝试实施“滑动删除”(在水平方向滑动),则无需重新发明轮子。只需取消注释commitEditingStyle:forRowAtIndexPath:
代理中的方法UITableViewController
即可。
答案 2 :(得分:-1)
您检查过此源代码吗? : https://github.com/thermogl/TISwipeableTableView
这真的可以帮助你,这是一个“可刷卡”的桌面视图的完整实现......