【问题标题】: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 从我的视图控制器和我的表格视图转到我的添加视图控制器

标签: ios objective-c


【解决方案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
猜你喜欢
  • 2022-01-18
  • 2012-06-05
  • 2014-02-26
  • 2022-01-11
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2020-08-18
  • 2017-10-04
相关资源
最近更新 更多