1

使用 Parse,在我登录后,我会看到显示任务列表的 PFQueryTableViewController 和另一个允许我编辑任务详细信息并返回的详细视图控制器。现在的问题是,在我完成编辑并将任务详细信息视图从堆栈中弹出后,PFQueryTableViewController 没有反映新的更改。但是,当我返回登录屏幕(在 PFQueryTableViewController 之前查看)并再次重新进入表视图时,表视图列表确实会更新。我尝试了以下方法:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.tableView reloadData];
}

并且

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self loadObjects];
    [self.tableView reloadData];
}

然而,它们似乎没有生效。我的猜测是在视图弹出并出现表视图后数据会更新。我只是想知道在我调查时是否有人对此有任何见解。谢谢!

4

4 回答 4

1

您可以尝试在 viewDidAppear 中重新查询 queryForTable 方法(但是,这自然会在每个视图外观上使用 API 请求)

- (void)viewDidAppear:(BOOL)animated {
 [self queryForTable];
}
于 2015-02-10T17:12:11.633 回答
0

此答案假定您正在使用本地数据存储并希望看到其中所做的更改反映在 PFQueryTableViewController 中。

因为 ParseUI 类没有通过本地数据存储实现任何形式的缓存,所以在保存操作完成并且 tableView 从 Parse 获取新项目之前,在详细视图中所做的更改不会出现在 PFQueryTableViewController 中。

您的问题的一种解决方案是向 PFQueryTableViewController 添加一个类别,该类别修改它获取数据的方式,以包括本地数据存储中的内容。

于 2015-02-16T07:35:18.563 回答
0

您应该确保在弹出视图控制器之前保存数据。

将 Parse 的保存方法与完成处理程序一起使用。

[request saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
  if (succeeded) {
    [self.navigationController popViewControllerAnimated:YES];
  }
}];
于 2015-02-16T07:44:43.177 回答
0

您可以使用[self loadObjects]来触发对PFQueryTableViewController.

于 2015-11-05T07:56:51.140 回答