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