当我使用UIActionSheet确认时删除TableView中的行

时间:2012-10-23 12:00:53

标签: ios uitableview

我使用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];

}


}

5 个答案:

答案 0 :(得分:3)

这是问题

[listOfName removeObjectAtIndex:self.selectedIndex];

selectedIndex的{​​{1}}值始终为0,因为未将其设置为要删除的表格行的索引。

在展示UIActionSheet之前,将其值设置为indexPath.row

UIActionSheet

然后在self.selectedIndex = indexPath.row; [actionSheet showInView:self.view]; 0中的clickedButtonAtIndex:方法中,确保重新加载表格视图。

case

答案 1 :(得分:1)

您也可以从数组中删除元素,然后再次重新加载表视图

答案 2 :(得分:0)

我发现这个委托方法,我想,你已经实现了。

tableView:moveRowAtIndexPath:toIndexPath:

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

答案 3 :(得分:0)

从数组中删除元素。

[yourArray removeObject:indexpath.row];

重新加载你的桌面视图。

[yourTableView reloadData];

答案 4 :(得分: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];
        }
}