保存核心数据对象后,UISplitView 详细信息未更新
Posted
技术标签:
【中文标题】保存核心数据对象后,UISplitView 详细信息未更新【英文标题】:UISplitView Details not updating after Core Data object is saved 【发布时间】:2012-12-14 04:35:12 【问题描述】:我正在开发一个新的 iPad UISplitViewController 应用程序,我在左侧有一个带有核心数据对象的 MasterView。当一个 CoreData 对象被选中时,它的详细信息会显示在 DetailView 中。可以在 DetailView 中编辑和更改对象的详细信息,然后通过按 DetailView 中的按钮进行保存。
按下保存按钮后,用户必须在 MasterView 中重新选择 Core Data 对象才能看到对象的更新信息。
我想在按下保存按钮时重新加载对象的数据。
我试图调用 MasterView 的
- (void)tableView:(UITableView *)aTableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
但尚未成功从 detailView 更新对象详细信息。
任何建议或代码将不胜感激。
【问题讨论】:
【参考方案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];
通常不需要选择内容(最后两行),但有时选择会丢失 - 如果您想保留选择的视觉指示,请使用此选项。
【讨论】:
以上是关于保存核心数据对象后,UISplitView 详细信息未更新的主要内容,如果未能解决你的问题,请参考以下文章
通用应用程序中 UITabBar 内的 UISplitView 未更新详细信息视图