当用户决定删除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];
}
答案 0 :(得分:1)
在此之后,你也可以提出一个AlertView,询问他们是否真的,真的,真的想要删除。
打开按钮然后按删除的两步过程应该是充分的确认。
做你正在做的事情在我看来并不是标准做法,一旦你进入那个领域,你就会在框架中找到漏洞。
答案 1 :(得分:1)
我同意上述讨论,需要删除3次是一个坏主意。
但是,对于其他操作,可能有充分的理由重置行。最简单的解决方案就是重新加载一行。
Swift 2.2:
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
答案 2 :(得分: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.
}
}
答案 3 :(得分:0)
只需退出编辑模式(Swift):
tableView.setEditing(false, animated: true)