这是相当容易,如果你使用的是NSFetchedResultsController您的表视图。有了这一点,你可以实现NSFetchedResultsControllerDelegate协议方法在VC1视图控制器:
– controllerWillChangeContent:
– controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
– controller:didChangeSection:atIndex:forChangeType:
– controllerDidChangeContent:
这样,当你保存在VC2视图 - 控制更改您的managedObjectContext,自动生成hasChanges
事件,通知fetchedResultsController,和fetchedResultsController执行这些委托方法。您的表格将自动使用委托方法中的代码更新更改。在你的情况下,我认为你的重点是controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
方法,其中更改类型为NSFetchedResultsChangeUpdate
。
如果是更新类型,您可以像在tableView协议方法insertRowsAtIndexPaths:withRowAnimation:
中那样配置单元格indexPath
。当然,在这种情况下,单元格已经在表格中,所以你没有插入它,但是你正在重新配置它。
你将你的括号委托方法与1controllerWillChangeContent:and 1controllerDidChangeContent:
含有调用分别[tableView beginUpdates];
和[tableView endUpdates]
(其中tableView
被改变为参考到您的tableView对象)。当更改完成时,这些将保持fetchedResultsController和tableView的高兴,并且不会出现关于它们不同步的任何错误。 (如果你只是改变一个单元格的内容,这可能不是一个大问题。)
当我回到我的办公室并将它发布到这里时,我会为你挖出一个例子。我在周末参与了一个我正在合作的项目,并解决了很多问题。
来源
2011-11-01 22:54:33
Jim