0

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

4

3 回答 3

4

-(无效)viewWillAppear:动画

不确定它是否在 [self.navigationController popViewControllerAnimated:YES] 之前调用;但肯定是在你看到风景之前。拨打电话以在其中重新加载地图的注释。

还要确保调用 viewWillAppear 超级。

如果两个视图都不能从同一个数据对象中工作,您将需要一个委托来将数据发回。

于 2013-01-25T15:14:37.360 回答
0

正如安迪所说,您可以使用委托模式,也可以使用 NSNotificationCenter. 我个人使用NSNotificationCenter.

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

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

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

于 2013-01-25T15:14:39.343 回答
0

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];

希望能帮助到你。

于 2013-06-26T10:55:41.263 回答