我的第一个视图是一个tableView(RootViewController)。我的第二个视图是一个tableView,其数据依赖于从RootViewController传递的对象。我的第3个视图是一个包含textField的视图。它也采用与第二个视图相同的对象。 textField保存传递的对象的名称。当我更改它时,将其保存并返回到第二个视图,它不会显示更新的信息。但是,当我转到第一个视图时,它会显示更新,然后是第二个视图。
我使用了[self.tableView reloadData];
在第二个视图的viewWillAppear方法但不起作用。
当我说我保存时,我会这样做:
if (![context save:&error])
// error stuff
(上下文也通过didSelectRowAtIndexPath传递视图)
这一定非常简单。至少我希望如此。感谢。
答案 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方法。