2013-10-17 35 views
0

說,我有一個實體「父母」,可以有多個「孩子」。在刪除時,我這樣做:刪除與UITableViewRowAnimationFade的關係

[self.parent removeChildObject:self.childToRemove]; 
[self.managedObjectContext save:nil]; 

隨着不僅如此,現場並沒有改變,該行不會被刪除。所以我所做的是我找回根據該「父」了所有的「孩子」,並呼籲

[self.tableview reloadData]; 

雖然它做了正確的,但是,刪除似乎瞬間。該行在一眨眼的時候就消失了。我希望它與行漸變動畫。

我讀到只有使用NSFetchedResultsController獲取的實體調用了這個委託方法「didChangeObject」,我把我的行動畫淡入淡出。然而,對於檢索「孩子」,我沒有使用控制器獲取,但我取它

[self.parent children]; 

回答

0

這段代碼應該這樣做。

[self.tableView beginUpdates]; 
NSArray * rowIndexPathArray = @[childObjectIndexPath]; 
[self.tableView deleteRowsAtIndexPaths:rowIndexPathArray withRowAnimation:UITableViewRowAnimationFade]; 
[self.tableView endUpdates]; 
+0

我應該在哪裏放置removechildobject和manageobjectcontext.save。因爲當我試圖只保存deleterowatindexpath後,我得到一個異常,並在保存之前也得到錯誤 – iPhoneJavaDev

+0

您需要將上下文之外的對象保存在NSMutableArray或NSArray中。從數組中刪除對象,更新該數組中的表,分別更新上下文。 – AdamG

+0

當我顯示它們時,這些對象已經保存在NSArray中。我試着把你的代碼放在我的removeChildObject方法之前,但是我的應用程序掛在了endUpdates上。我希望你能清楚地給出我以前的代碼給出的順序。 – iPhoneJavaDev