1

長押しイベントの選択されたインデックスでテーブル ビューの単一セルの編集を有効にしたいのですが、テーブル全体の編集を有効にする以外はすべて機能します。選択したセルだけを編集できるようにするにはどうすればよいですか?

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {

    CGPoint p = [gestureRecognizer locationInView:self.savedPropertyTableView];

    NSIndexPath *indexPath = [self.savedPropertyTableView indexPathForRowAtPoint:p];
            if (indexPath == nil) {
            [self setEditing:YES animated:YES];
            NSLog(@"long press on table view but not on a row");
        }

        else {
            [self setEditing:YES animated:YES];
            NSLog(@"long press on table view at row %d", indexPath.row);
        } 
    }
4

2 に答える 2

0

正確な解決策ではありませんが、同じ結果です。代わりにスワイプジェスチャを作成しましたが、それは私が望んでいたように機能します(単一のセルを削除します)

テーブル ビュー セル:

UISwipeGestureRecognizer *sgdr = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSlideRight:)];
[sgdr setDirection:UISwipeGestureRecognizerDirectionRight];
[self.savedPropertyTableView addGestureRecognizer:lpgr];

次に、メソッドを作成しました:

-(void)handleSlideRight:(UISwipeGestureRecognizer *)gestureRecognizer {
    CGPoint p = [gestureRecognizer locationInView:self.savedPropertyTableView];

    NSIndexPath *indexPath = [self.savedPropertyTableView indexPathForRowAtPoint:p];
    if (indexPath == nil)
    {
        [self setEditing:YES animated:YES];
        NSLog(@"slide on table view but not on a row");
    }

    else
    {
        [self setEditing:YES animated:YES];
        NSLog(@"slide on table view at row %d", indexPath.row);
    }
}
于 2012-12-14T06:02:02.660 に答える
0

テーブル全体の代わりに、その単一のセルを編集可能にします:

UITableViewCell *newCell = [yourTable cellForRowAtIndexPath:indexPath];

[newCell setEditing:YES animated:YES];
于 2012-12-14T06:01:20.117 に答える