我怎么能在popViewController之前刷新视图的内容?

时间:2013-01-25 15:03:11

标签: ios uiviewcontroller uinavigationcontroller viewdidload popviewcontroller

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

3 个答案:

答案 0 :(得分:4)

- (无效)viewWillAppear中:动画

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

还要确保调用viewWillAppear super。

如果两个视图都不能从同一个数据对象中运行,则需要一个委托来发回数据。

答案 1 :(得分:0)

您可以使用委托模式,如Andy所说,或NSNotificationCenter。我个人使用NSNotificationCenter

要使用通知中心,您需要向观看控制器类添加观察者。当您弹出视图时,向中心发送通知,当您通过{{1通知中心时,请说明您的通知为update中心告诉任何一个类update运行一个方法....这很简单。

update

检查此答案的完整代码: IOS: Move back two views

答案 2 :(得分: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];

turnButtonCountinuesOff是您在父视图控制器上的功能

在您的孩子视图控制器中输入:

//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];
希望它有所帮助。