通过NSFetchedResultsControllerDelegate协议更新单元格的差异?

时间:2012-01-19 14:38:43

标签: iphone objective-c cocoa-touch uitableview

我一直在查看NSFetchedResultsControllerDelegate协议参考和一些在线示例代码,并注意到在调用时更新UITableViewCell的两种不同实现:

- (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;

1 个答案:

答案 0 :(得分:0)

正如选择器的名称所暗示的那样,如果一个单元格是在自定义方法(而不是Apple的API)中配置的,并且很可能在重新加载表格视图时更新。

在两种情况下,reloadRowsAtIndexPaths:UITableView方法,您可以“免费”获得动画效果。单元格的更新方式和位置?没有代码就无法分辨。