我有两个viewcontroller
。第一个视图控制器包括地图和注释,当我触摸注释时,我的第二个视图来了。在第二个视图中,我触摸删除按钮。所以我的第一个视图的内容必须在此代码之前刷新:[self.navigationController popViewControllerAnimated:YES];
我需要调用viewdidload
方法或从第二个视图刷新我以前的视图的内容。
3 回答
-(无效)viewWillAppear:动画
不确定它是否在 [self.navigationController popViewControllerAnimated:YES] 之前调用;但肯定是在你看到风景之前。拨打电话以在其中重新加载地图的注释。
还要确保调用 viewWillAppear 超级。
如果两个视图都不能从同一个数据对象中工作,您将需要一个委托来将数据发回。
正如安迪所说,您可以使用委托模式,也可以使用 NSNotificationCenter
. 我个人使用NSNotificationCenter
.
要使用通知中心,您需要将观察者添加到您的视图控制器类中。当您弹出视图时,您会向 center 发送通知,假设您的通知是update
当您通知中心时update
, center 告诉任何类已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];
turnButtonCountinesOff 是您在父视图控制器中的功能
在你的孩子 viewcontroller 放这个:
//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];
希望能帮助到你。