2010-10-27 170 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。