2012-01-19 60 views
1

我一直在尋找的NSFetchedResultsControllerDelegate協議參考和一些示例代碼在線和打電話時已經注意到了兩種不同的實現更新一個UITableViewCell:通過NSFetchedResultsControllerDelegate協議進行單元更新的差異?

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject 
    atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type 
    newIndexPath:(NSIndexPath *)newIndexPath { 

誰能解釋一下兩種不同的做法?

它們是:

// ONE 
case NSFetchedResultsChangeUpdate: 
[self configureCell:[tableView cellForRowAtIndexPath:indexPath]atIndexPath:indexPath]; 
break; 

OR

// TWO 
case NSFetchedResultsChangeUpdate: 
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
break; 

回答

0

作爲選擇的名字所暗示的,如果一個單元在一個自定義的方法(不是蘋果的API)配置,並極有可能將是在重新加載表視圖時更新。

在兩種情況下reloadRowsAtIndexPaths:UITableView方法,其中您有一個「免費」的動畫效果。單元格的更新方式和位置?沒有代碼就無法辨別。