保存后如何返回上一个控制器并刷新该控制器

Posted

技术标签:

【中文标题】保存后如何返回上一个控制器并刷新该控制器【英文标题】:How to go back to previous controller and refreshing that controller after saving 【发布时间】:2014-05-23 08:54:14 【问题描述】:

我在视图控制器中有一个表格视图。当我想在我的表格视图中添加一些东西时,我按下添加按钮,然后我转到一个详细视图控制器,那里有一个保存按钮。现在我想回到我的 tableviewcontroller 并在按下我的保存按钮后刷新它。

我将数据发送到外部数据库,而不是核心数据。

【问题讨论】:

我想如果你能放一些示例代码,那么我们将能够进一步帮助你。根据您的简短描述,我认为您可能需要 [self.tableView reloadData]; 是的,我想添加一些代码,但是代码太多了,但是你知道我在按下保存按钮后如何返回到之前的视图控制器 你可以在你的导航控制器上使用 popViewController: 我们需要了解更多细节,例如,该应用程序适用于 iPhone 还是 iPad?你在使用 UINavigationController 吗?等等......没有那个,我们不知道如何帮助你。可能会添加一个屏幕截图来显示您目前所做的事情。 这是一款适用于 iPhone 的应用程序。应用程序中有一个 UINavigationController。我使用模态 segue 从我的视图控制器和我的表格视图转到我的添加视图控制器 【参考方案1】:

由于您使用的是modalViewController,点击保存按钮后,您可能会关闭它并刷新数据,在这种情况下您需要使用NSNotification

试试下面的代码:-

在包含 tableviewview controller 内,

-(void)viewWillAppear:(BOOL)animated
  [super viewWillAppear:animated];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tableReload) name:@"tableReload" object:nil];


-(void)viewWillDisappear:(BOOL)animated
  [super viewWillDisappear:animated];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:@"tableReload" object:nil];


-(void)tableReload
  [self.tableView reloadData];

在第二个视图控制器中,保存按钮的 IBAction

[[NSNotificationCenter defaultCenter]postNotificationName:@"tableReload" object:nil];
[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

我建议将解雇委托给原始 ViewController,并在完成块中调用 reloadData。而不是使用 NSNotification 来处理这样的事情。 NSNotification 更多的是用于广播它更新的模型对象,而不是 IMO 控制器。 保存按钮和返回工作,但是当它返回我的视图控制器和我的表格视图时,我的应用程序崩溃了。它给了我一个 Thread1 错误访问代码 @Jeff 同意你的观点,但对于初学者来说,delegate 可能不太直接。我知道 NSNotification 不是一个好习惯。 @Brent 你能粘贴崩溃日志吗?是否添加了异常断点? 控制台不记录任何内容。我刚刚得到线程 1 BAD_ACCES_CODE

以上是关于保存后如何返回上一个控制器并刷新该控制器的主要内容,如果未能解决你的问题,请参考以下文章

删除 tableview 单元格并刷新视图控制器后刷新 tableview

我的 ViewModel 流程正确吗?如何将其发送回控制器并在控制器操作上刷新它?

如何在收到推送通知后刷新 watchkit 界面控制器

如何刷新视图控制器

操作后如何在表格上保持相同的分页页面

如何快速刷新所有视图控制器