2010-10-27 173 views
0

我有一个应用程序设置为有一个tableview,它允许用户添加和删除单元格(这是事件)。添加和删​​除DOES的工作,但是当我删除一个单元格(通过进入编辑模式),我可以点击( - )按钮来删除,然后我点击删除按钮,但删除按钮保持突出显示,单元格不会消失,直到我点击退出编辑模式的“完成”按钮。这是任何人都见过的问题吗?如果是这样,是否有解决方案?由于表格单元格错误地删除

编辑:

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

NSLog(@"Delete"); 

[eventList removeObjectAtIndex:indexPath.row]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:YES]; 
[tableView reloadData]; 
+0

你很可能做错了什么,你应该发布一些代码,主要是你的tableview委托方法。 – Daniel 2010-10-27 01:25:42

+0

我发布了commitEditingStyle,不知道还有什么你想看...对不起。 – Inanepenguin 2010-10-27 01:27:43

+0

为什么在deleteRowsAtIndexPaths之后调用reloadData? – Anna 2010-10-27 01:31:11

回答

3

我建议去除commitEditingStyle调用reloadData。 deleteRowsAtIndexPaths已经负责重绘表视图。

寻找书面来源的最佳地点是documentation
请参阅this page上的“删除表格视图行的示例”。

另请注意,在deleteRowsAtIndexPaths中,withRowAnimation不包含BOOL参数。而不是YES,它应该是像UITableViewRowAnimationFade这样的UITableViewRowAnimation枚举值。

+0

我阅读了文档,感觉像我的代码(现在我做了你所说的)很好。我不知道这是否有帮助,但我提出了一个确切发生了什么的视频:http://www.youtube.com/watch?v=eyAHdodUv-c – Inanepenguin 2010-10-27 03:05:45

+0

好的,视频是在删除reloadData之前还是之后?您的评论不清楚它是固定还是仍然存在问题?请注意,在执行deleteRowsAtIndexPaths时,将调用部分或全部表视图的数据源和委托方法,因此请确保在调用基础数据源之前更新了所有基础数​​据源。 eventList是你需要更新的唯一东西吗? – Anna 2010-10-27 12:43:54

0

删除行后,您绝对不需要reloadData。如果仍不起作用,您可能需要尝试在beginUpdatesendUpdates中包装删除。最后,withRowAnimation:参数应该是UITableViewRowAnimation枚举之一,而不是BOOL。