6
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleDelete;
}


- (void)tableView:(UITableView *)tableView commitEditingStyle(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    if(editingStyle == UITableViewCellEditingStyleDelete){
        //[theSimpsons removeObjectAtIndex:indexPath.row];

        NSString *time = [[arrayList objectAtIndex:indexPath.row] objectForKey:@"TIME"];
        NSString *date= [[arrayList objectAtIndex:indexPath.row] objectForKey:@"DATE"];
        DBManager *dbm = [[DBManager alloc] init];
        [dbm initiallzeDatabase];
        [dbm deleteItemAtIndexPath:time :date];

        //arrayList = [dbm getParkResults];
        //[parkTableView reloadData];

        [arrayList removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

私は自分のアプリで上記のコードを使用しました。編集部分は正常に機能しますが、削除ボタンは、セルを左から右にスワイプした場合にのみ表示されます。これで、Facebookのように左から右にスワイプすると開くメニューができました。では、ユーザーが右から左にスワイプしたときに削除ボタンが表示されるようにするにはどうすればよいですか。

4

4 に答える 4

6

デリゲートをに設定しないでくださいUISwipeGestureRecognizer

これをviewDidLoadあなたが始めた場所に書いてくださいUITableView

 UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(callYourMethod:)];
 swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
 [self.tblView addGestureRecognizer:swipeRight];

以下の方法で何も書く必要はありません。

- (void)callYourMethod:(UISwipeGestureRecognizer *)recognizer
{

}
于 2013-03-26T10:14:02.367 に答える
2

これはうまくいくかもしれません。このコードをawakeFromNibまたはに入れてくださいinit

UISwipeGestureRecognizer *swipeDelete = [[UISwipeGestureRecognizer alloc]     initWithTarget:self action:@selector(handleSwipeDelete:)];
[swipeDelete setDirection: UISwipeGestureRecognizerDirectionLeft];
[yourTableView addGestureRecognizer:swipeDelete];

次に、handleSwipeDeleteセルを整理して削除ボタンを表示します。おそらく、セルの状態を処理し、swipeLeft/swipeRightで変更する必要があります。

于 2013-03-26T08:37:52.207 に答える
1

UITableViewCellの動作をカスタマイズする必要があるようですが、Appleが右から左にスワイプした後に動作を提供していることに気づいたことはありません。

于 2013-03-26T07:50:20.403 に答える
1

あなたはそれを使用してそれを得ることができますtwo Methods of UITableVie.

// This only needs to be implemented if you are going to be returning NO
// for some items. By default, all items are editable.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return YES if you want the specified item to be editable.
    return YES;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //add code here for when you hit delete
     //When you remove a cell of your tableview, you also has to remove your array object at index x
    }    
}

オブジェクトを削除した後。をリロードする必要がありUITableViewます。

[self.tableView reloadData];

詳細については、この公式ドキュメントをお読みください。

于 2013-03-26T10:28:15.663 に答える