iOS - 如何从推送的控制器更改根导航控制器的属性

时间:2014-06-05 15:11:02

标签: ios uinavigationcontroller

我有一个带有根视图控制器的导航控制器,它是WAViewController,它推送WAInfoViewController传递给它一些值。现在我用

[self.navigationController popViewControllerAnimated:YES];

转回来,我想恢复WAViewController中WAInfoController中更改的值。我该怎么办?

我想如果我创建了对WAViewController的引用,那么我就错了,因为它已经初始化了

WAViewController *controller = [[WAViewController alloc]init];
controller.properties = VALUES;

更新

谢谢你的回答。问题是在topViewController中我初始化一个带有播放/暂停按钮的音频指南。当我进入info-page(推送的视图控制器)时,我使用topViewController的值初始化新的合成器和新的话语,以便音频指南继续。好吧,当我回去时,音频指南停止,它不再工作

2 个答案:

答案 0 :(得分:1)

您也可以通过退出segues执行此操作。您可以在WAViewController中将退出segue定义为

-(void)nameOfExitSegue:(UIStoryboardSegue*)segue {
   WAInfoViewController* controller = segue.sourceViewController;

   // Get changed values and do something with them.
}

在storyboard中,您可以将要解除WAInfoVIewController的UI元素的操作挂钩到exit segue图标。当您控制 - 将线拖到Exit Segue图标时,您将看到弹出的segue方法。只需选择您所做的exitSegue方法即可。

答案 1 :(得分:0)

你可以通过几种方式做到这一点。您可以使用委托,这可能是最好的方法 - 您将在WAInfoViewController中创建委托协议,并且WAViewController在执行推送时将自己设置为委托。在回弹到WAViewController之前,您可以调用委托方法来执行您需要执行的操作。

另一种更简单的方法是使用topViewController属性获取对导航控制器根视图控制器的引用。

WAViewController *controller = self.navigationController.topViewController;
controller.properties = VALUES;