スワイプジェスチャを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
ます。次に、この座標を使用してIndexPath
、スワイプが発生した場所の行を取得しUITableView
ます。最後に私を使用しIndexPath
て取得しUITableViewCell
ます。本当にシンプル..
注:私はこれまで何度も尋ねられてきました。したがって、私が各個人ではなくで 使用SwipeGestureRecognizer
した理由のこの説明を追加します。UITableView
UITableViewCell
SwipeGestureRecognizer
それぞれに付けていたかもしれませんUITableViewCell
。SwipeGestureRecognizer
セルごとに個別に接続する必要があったため、これは行いませんでした。したがって、1000個のセルがあれば、UITableView
1000個のオブジェクトを作成する必要がありSwipeGestureRecognizer
ます。これは良くない。上記のアプローチでは、1つ作成するだけSwipeGestureRecognizer
で、それだけです。
「スワイプして削除」(水平方向にスワイプ)を実装しようとしている場合は、車輪の再発明を行う必要はありません。デリゲートでメソッドのコメントを解除するだけcommitEditingStyle:forRowAtIndexPath:
です。UITableViewController
このソースコードを確認しましたか?: https ://github.com/thermogl/TISwipeableTableView
それは本当にあなたを助けるかもしれません、これは「スワイプ可能な」テーブルビューの完全な実装です...