0

我使用 UIActionSheet 来确认删除 TableView 中的行。我有 3 行,但是当我交换删除第一行时,第一行不删除,但第三​​行被删除。在我继续再次删除第一行但第二行被删除后。我不知道为什么。请帮我解决这个小问题。

- (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

3

这是问题

[listOfName removeObjectAtIndex:self.selectedIndex];

selectedIndexyour的值UIActionSheet始终为 0,因为它没有设置为要删除的表行的索引。

indexPath.row在呈现之前将其值设置为UIActionSheet.

self.selectedIndex = indexPath.row;
[actionSheet showInView:self.view];

然后在0clickedButtonAtIndex:内的方法中case,确保重新加载表视图。

[tableView reloadData];
于 2012-10-23T12:29:10.643 回答
1

您还可以从数组中删除元素并再次重新加载表格视图

于 2012-10-23T12:20:49.550 回答
0

我找到了这个委托方法,我猜你已经实现了。

tableView:moveRowAtIndexPath:toIndexPath:

从我的角度来看,您应该将 toIndexPath 存储为属性或属性,当用户确认时,使用存储的“toIndexPath”将其删除。如果用户取消此操作,请将属性或属性设置为 nil(在 ARC 上下文或在 NON-ARC 上下文中释放属性并将其设置为 nil)。

于 2012-10-23T12:18:28.790 回答
0

从您的数组中删除元素。

[yourArray removeObject:indexpath.row];

重新加载您的表格视图。

[yourTableView reloadData];
于 2012-10-23T12:27:24.777 回答
0
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
       if (editingStyle == UITableViewCellEditingStyleDelete)
       {
            selectedIndex = indexPath.row;
           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];
              [tableView reloadData];
        }
}
于 2012-10-23T12:35:59.097 回答