UISplitView 详细信息在保存核心数据对象后未更新



我正在开发一个新的iPad UISplitViewController App,我在左侧有一个带有Core Data对象的MasterView。 选择 CoreData 对象后,其详细信息将显示在详细信息视图中。对象的详细信息可以在详细信息视图中进行编辑和更改,然后通过按详细信息视图中的按钮进行保存。

按下保存按钮后,用户必须在主视图中重新选择核心数据对象才能查看对象的更新信息。

我想在按下保存按钮时重新加载对象的数据。

我试图打电话给主视图的

- (void)tableView:(UITableView *)aTableView 
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath

但尚未成功从详细信息视图更新对象详细信息。

任何建议或代码将不胜感激。

您需要在主视图中使用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];
  }
}
选择

内容(最后两行)通常不是必需的,但有时选择会丢失 - 如果您想保留选择的视觉指示,请使用此选项。

最新更新