TableView不会重新加载。使用核心数据

时间:2010-07-14 04:15:16

标签: iphone reloaddata

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

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

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

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

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

这一定非常简单。至少我希望如此。感谢。

2 个答案:

答案 0 :(得分: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];

这应该有用。

答案 1 :(得分:0)

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