我有两个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];
希望对您有所帮助。