0
我有一個應用程序與UITableView可以刪除單元格使用行操作。但是,如果我快速連續執行兩次,則應用程序會與BAD_EXEC一起崩潰。UITableView崩潰,如果我刪除行太快
問題顯然與時間有關。我要求桌子在完成舊的事情之前做其他事情。它可能是動畫,也可能是細胞的去除。
無論哪種方式,在我開始之前在tableview上調用reloadData似乎可以修復它。這個解決方案有兩個問題。
首先,reloadData會干擾通常的行刪除動畫的一些好處。這不是什麼大問題,但我更喜歡它與所有動畫完好無損。
其次,我還沒有完全理解發生了什麼。
任何人都可以幫助我理解和/或提出更好的解決方案嗎?
下面的代碼...
-(void) rowActionPressedInIndexPath: (NSIndexPath *)indexPath timing:(Timing) doTaskWhen
{
[self.tableView reloadData]; // This is my current solution
[self.tableView beginUpdates];
ToDoTask *toDo = [self removeTaskFromTableViewAtIndexPath:indexPath];
toDo.timing = doTaskWhen; // Just some data model updating. Has no effect on anything else here.
[self.tableView endUpdates];
}
removeTaskFromTableView大多是代碼的工作,如果我需要刪除一整節或行。我已確認該應用程序,使得正確的選擇和錯誤仍然可以正常工作,從而從方法的唯一相關的信息是...
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
編輯:我已經注意到,標準刪除行操作提供該系統不允許我快速移動。有一個內置的延遲(大概)可以防止這個確切的問題。
您還需要更新Array。在各個索引處添加/刪除對象。 –
你的數據源怎麼樣也得到更新? –
該表只顯示具有特定時間的項目,因此更改toDo對象時間的行是更新。無論如何,只有我快速行動纔會發生,而如果我沒有更新模型,每次我做任何事情都會發生各種問題。 –