4

当用户决定删除 UITableViewCell 时,我会出现第二个确认对话框。这是我的正常状态下的表格视图:

普通的


这是整个表格进入编辑模式的时候:

普通编辑模式


现在,当用户点击左侧的红色减号之一时,单元格将进入删除确认模式:

删除确认模式


如果用户随后点击刚刚出现的删除按钮,则会出现此操作表:

第二次确认


这就是问题出现的地方。如果用户确认他们要删除地图,一切都很好。但是如果按下取消按钮,动作表就会消失,但表格视图仍然是这样的:

删除确认按钮不应再处于选中状态,并且应隐藏在视图中

问题是删除确认按钮不应再处于其选定状态,并且应该隐藏自身。正如你所看到的,它没有。我在文档中的搜索已经结束,没有结果。我不想这样做,setEditing:NO因为我希望表格保持正常的编辑状态。有任何想法吗?

编辑1:这是里面发生的事情tableView:commitEditingStyle:forRowAtIndexPath:

- (void)tableView:(UITableView*)tableView commitEditingStyle:
    (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath {
    NSInteger finalIndex = [self getFinalIndexForIndexPath:indexPath];

    NSString* mapTitle = ((PreviewDataObject*)[[[SingletonDataController sharedSingleton]
        getImportedOrSavedMapPreviews:masterIdentifierString] 
        objectAtIndex:finalIndex]).titleString;

    UIActionSheetWithIndexPath* sheet = [[UIActionSheetWithIndexPath alloc] initWithTitle:
        [NSString stringWithFormat:@"Are you sure you want to delete the map '%@'?", 
        mapTitle] delegate:self cancelButtonTitle:@"Cancel" 
        destructiveButtonTitle:@"Delete Map" otherButtonTitles:nil];
    sheet.indexPath = indexPath;
    [sheet showFromTabBar:[AppDelegate appDelegate].tabBarController.tabBar];
    [sheet release];
}
4

4 回答 4

1

在那之后,你也可以提出一个 AlertView 询问他们是否真的,真的,真的想要删除。

打开按钮然后按删除的两步过程应该是足够的确认。

在我看来,做你正在做的事情并不是标准做法,一旦你进入那个领域,你就会在框架中发现漏洞。

于 2012-06-05T14:25:40.373 回答
1

我同意上述讨论,即需要点击删除 3 次是个坏主意。

但是,对于其他操作,可能有充分的理由重置该行。最简单的解决方案就是重新加载那一行。

斯威夫特 2.2:

tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
于 2016-06-09T19:49:25.613 回答
0

试试这个,告诉我它是否适合你。

  -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
  {
      if (editingStyle == UITableViewCellEditingStyleDelete)
       {
           // Delete the row from the data source.

           [arr removeObjectAtIndex:indexPath.row];


           [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
         }
        else if (editingStyle == UITableViewCellEditingStyleInsert)
        {
          // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
        }   
    }
于 2012-05-07T11:50:16.440 回答
0

只需退出编辑模式(Swift):

tableView.setEditing(false, animated: true)
于 2016-10-27T09:34:15.980 回答