0

UIActionSheet を使用して、TableView で行を削除することを確認します。3行ありますが、最初の行を削除するためにスワップすると、最初の行は削除されませんが、3番目の行は削除されます。最初の行をもう一度削除し続けた後、2行目が削除されました。どうしてか分かりません。この小さな問題を解決するのを手伝ってください。

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

if (editingStyle == UITableViewCellEditingStyleDelete)
{

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];

    [actionSheet showInView:self.view];

}

}





-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{


switch (buttonIndex) {
    case 0:

        [listOfName removeObjectAtIndex:self.selectedIndex];
         //selectedIndex = indexPath.row;
        [self viewWillAppear:YES];

}


}
4

5 に答える 5

1

配列から要素を削除して、テーブルビューを再度リロードすることもできます

于 2012-10-23T12:20:49.550 に答える
0

このデリゲート メソッドを見つけましたが、既に実装されていると思います。

tableView:moveRowAtIndexPath:toIndexPath:

私の観点からは、toIndexPath をプロパティまたは属性として保存し、ユーザーが確認したら、保存された「toIndexPath」とともに削除する必要があります。ユーザーがこのアクションをキャンセルした場合は、プロパティまたは属性を nil に設定します (ARC コンテキストまたは非 ARC コンテキストでは、属性を解放し、同様に nil に設定します)。

于 2012-10-23T12:18:28.790 に答える