0

我的第一个视图是 tableView (RootViewController)。我的第二个视图是一个 tableView,其数据依赖于从 RootViewController 传递的对象。我的第三个视图是一个具有文本字段的视图。它也采用与第二个视图相同的对象。该 textField 包含传递对象的名称。当我更改它时,保存它并返回到第二个视图,它不会显示更新的信息。但是当我转到第一个视图时,它显示它已更新,然后第二个视图也是如此。

[self.tableView reloadData]; 在第二个视图的 viewWillAppear 方法中使用了,但这不起作用。

当我说我保存时,我会这样做:

if (![context save:&error])
// error stuff

(上下文也通过 didSelectRowAtIndexPath 传递给视图)

这一定很简单。至少我希望如此。谢谢。

4

2 回答 2

1

在您的第二个视图中,实现以下通知:

- (void)contextDidSave:(NSNotification *)notification
{

  [managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
  [self.tableView reloadData];

}

将以下内容放入viewDidLoad方法中:

[[NSNotificationCenter defaultCenter] addObserver:self
                                selector:@selector(contextDidSave:)
                                                 name:@"ContextDidSave" object:nil];

将以下内容放入dealloc

[[NSNotificationCenter defaultCenter] removeObserver:self];

现在,当您在文本字段中保存数据时,在保存上下文之后执行以下操作:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ContextDidSave" object:managedObjectContext];

这应该有效。

于 2010-07-14T06:07:22.130 回答
0

在第二个视图中,将加载数据的代码放在 viewWillAppear 方法中,而不是 viewDidLoad 方法中。

于 2010-07-14T18:02:03.320 回答