我正在开发一个新的iPad UISplitViewController应用程序,我在左侧有一个带有Core Data对象的MasterView。选择CoreData对象后,其详细信息将显示在DetailView中。可以在DetailView中编辑和更改对象的详细信息,然后通过按DetailView中的按钮进行保存。
按下保存按钮后,用户必须在MasterView中重新选择Core Data对象才能看到Object的更新信息。
我想在按下保存按钮时重新加载对象的数据。
我试图调用MasterView的
- (void)tableView:(UITableView *)aTableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
但尚未成功更新detailView中的Objects详细信息。
非常感谢任何建议或代码。
答案 0 :(得分:1)
您需要在主视图中使用NSFetchedResultsController
。将选定的核心数据对象传递给要编辑的详细视图。保存发生时,您可以利用NSFetchedResultsControllerDelegate
协议实现对表视图的自动回调。
在协议回调中,事情很简单。这是didChangeObject
回调的完整存根。
-(void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
if (type == NSFetchedResultsChangeDelete) {}
else if (type == NSFetchedResultsChangeInsert) {}
else if (type == NSFetchedResultsChangeMove) {}
else if (type == NSFetchedResultsChangeUpdate) {
[self.tableView reloadRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:YES animated:YES];
}
}
通常不需要选择内容(最后两行),但有时选择会丢失 - 如果您想保留选择的可视指示,请使用此选项。