如何在弹出视图控制器之前刷新视图的内容



我有两个viewcontroller。第一个视图控制器包括地图和注释,当我触摸注释时,我的第二个视图来了。在第二个视图中,我触摸删除按钮。所以我的第一个视图的内容必须在这段代码之前刷新:[self.navigationController popViewControllerAnimated:YES]; 我需要调用viewdidload方法或从第二个视图刷新我以前的视图的内容。

-(void)viewWillAppear:animation

不确定它是否在 [self.navigationController popViewControllerAnimated:YES] 之前调用;但肯定是在你看到视图之前。 调用以重新加载地图中的注记。

还要确保调用 viewWillAppear super。

如果两个视图都无法从同一个数据对象中工作,则需要委托来发回数据。

你可以使用委托模式,如Andy所说,也可以使用NSNotificationCenter。我个人使用NSNotificationCenter.

要使用通知中心,您需要将观察器添加到视图控制器类中。当你弹出你的视图时,你向中心发送通知,假设你的通知是update当你用update通知中心时,中心告诉任何类update运行一个方法......这很简单。

[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil];

检查此答案以获取完整代码:IOS:后移两个视图

ViewWillApear 或 ViewDidApear 将被调用,因为 viewController 中有任何对象更改,但是如果要从另一个 viewcontrollerB 更改 viewcontrollerA,则需要 NSNotificationCenter 从 viewcontrollerA 调用函数

您始终可以使用 NSNotificationCenter 来更新父视图控制器

在你的父视图控制器上放这个:

//since child view controller calls turnItOff, notification center calls function "turnButtonCountinuesOff"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(turnButtonCountinuesOff) name:@"turnItOff" object:nil];

turnButtonCountinuesOff是你在父视图控制器上的函数

在你的孩子的视图控制器上,把这个:

//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];

希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新