19

スワイプジェスチャをUITableView実行していますが、現在指が入っているセルのインデックスパス、つまりどのセルからスワイプジェスチャが実行されているかを知りたいです。

indexPathその選択したセルの情報を表示する必要があるため、必要です。

前もって感謝します..

4

3 に答える 3

54

それで、あなたが本質的に必要とするのは、テーブル上のスワイプジェスチャからセルを取得することですか?そうです。あなたはを知る必要はありません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...
}

したがって、最初SwipeGestureRecognizerUITableView(ではなくUITableViewCell)にをアタッチします。その後、でスワイプが発生するとUITableView、最初にジェスチャが発生した場所の座標を取得しUITableViewます。次に、この座標を使用してIndexPath、スワイプが発生した場所の行を取得しUITableViewます。最後に私を使用しIndexPathて取得しUITableViewCellます。本当にシンプル..

注:私はこれまで何度も尋ねられてきました。したがって、私が各個人ではなくで 使用SwipeGestureRecognizerした理由のこの説明を追加します。UITableViewUITableViewCell

SwipeGestureRecognizerそれぞれに付けていたかもしれませんUITableViewCellSwipeGestureRecognizerセルごとに個別に接続する必要があったため、これは行いませんでした。したがって、1000個のセルがあれば、UITableView1000個のオブジェクトを作成する必要がありSwipeGestureRecognizerます。これは良くない。上記のアプローチでは、1つ作成するだけSwipeGestureRecognizerで、それだけです。

于 2011-08-22T08:23:48.647 に答える
0

「スワイプして削除」(水平方向にスワイプ)を実装しようとしている場合は、車輪の再発明を行う必要はありません。デリゲートでメソッドのコメントを解除するだけcommitEditingStyle:forRowAtIndexPath:です。UITableViewController

于 2011-08-22T08:46:37.053 に答える
-1

このソースコードを確認しましたか?: https ://github.com/thermogl/TISwipeableTableView

それは本当にあなたを助けるかもしれません、これは「スワイプ可能な」テーブルビューの完全な実装です...

于 2011-08-22T08:07:16.863 に答える