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

发布于 2024-09-10 06:33:19 字数 480 浏览 8 评论 0原文

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

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

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

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

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

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

My 1st view is a tableView (RootViewController). My 2nd view is a tableView whose data depends on an object that is passed from the RootViewController. My 3rd view is a view that has a textField. It also takes the same object that the 2nd view took. That textField holds the name of the passed object. When I change it, save it and go back to the 2nd view it doesn't show the updated info. But when I go to the 1st view it shows it updated and then so does the 2nd view.

I used [self.tableView reloadData];
in the 2nd view's viewWillAppear method but that doesn't work.

When I say I save I do:

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

(The context is also being passed through the views via didSelectRowAtIndexPath)

This must be annoyingly simple. At least I hope so. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

嘦怹 2024-09-17 06:33:19

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

- (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];

这应该有效。

In your second view, implement the following notification:

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

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

}

put the following in the viewDidLoad method:

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

put the following in dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Now, when you save the data in your textfield, just after saving the context do the following:

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

This should work.

傾城如夢未必闌珊 2024-09-17 06:33:19

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

In the 2nd view, put the code that loads the data in the viewWillAppear method, not the viewDidLoad method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文