我一直在查看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;
答案 0 :(得分:0)
正如选择器的名称所暗示的那样,如果一个单元格是在自定义方法(而不是Apple的API)中配置的,并且很可能在重新加载表格视图时更新。
在两种情况下,reloadRowsAtIndexPaths:是UITableView
方法,您可以“免费”获得动画效果。单元格的更新方式和位置?没有代码就无法分辨。