prepareForSegue for UINavigationController popToRootViewController

时间:2012-09-24 13:40:13

标签: objective-c ios uinavigationcontroller

我需要在两个视图控制器之间传递信息。在过去,我通过将第二个视图的.h导入到我的第一个视图的代码中,然后在第一个视图中实现prepareForSegue并在那里设置第二个视图的值来完成此操作。但是,现在我的2个视图控制器位于导航控制器中,因此没有与转换回根视图控制器相关联的segue(因为它是使用[self.navigationController popToRootViewControllerAnimated:YES]完成的)。

是否有类似于prepareForSegue的方法,我可以使用UINavigationController pop?或者我是否必须设置委托或NSNotifications以将信息发送回根视图?

2 个答案:

答案 0 :(得分:0)

push segue用于在一个视图控制器和下一个视图控制器位于UINavigationController时进行转换。在StoryBoard中,从一个视图拖动到下一个视图并选择push作为segue类型并设置segue的标识符。然后您可以正常设置目标视图控制器。

要传回信息,您需要设置一个委托,因为推送的视图控制器不应该有关于谁调用它的详细信息。

答案 1 :(得分:0)

你可以尝试实现自己的

@interface MyUINavigationController : UINavigationController  <UINavigationBarDelegate>

然后执行:

- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item

-(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item

然后,您可以将变量存储在UINavigationBar中,并通过调用:

按需使用它们
MyNavigationController *navi =self.navigationController;
navi.variable = myvariable;