如何弹出到前一个场景?

时间:2014-02-06 07:01:19

标签: ios objective-c

我在故事板和1个xib文件中创建了2个场景。我在xib文件中放了2个按钮(button1转到第一个场景,button2转到第2个场景)。如果我移动到第二个场景,那么从第一个场景开始到第三个场景(xib文件),如果我点击button1,它会正确导航(即到第一个场景),如果我点击button2,它会回到第二个场景。它工作正常。但是如果我移动则从第一个场景开始直接到第三个场景(xib文件),现在如果我点击button2,它只回到第一个场景。但我想让它来到第二个场景。按钮1正常工作,但不是button2。所以任何人都可以帮助我吗?我希望button2像我说的那样工作。

我的代码是:

@implementation XYZGreenViewController
-(IBAction)goredscreen:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:TRUE];
}

-(IBAction)goBlueScreen:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}

2 个答案:

答案 0 :(得分:1)

将UINavigationController视为一个堆栈,每次导航到一个新场景/ ViewController时,您实际上是将一个新的视图控制器推送到堆栈。

在您的第一个场景中,一旦到达第三个场景,您的堆栈中就会出现以下内容

[first scene | second scene | third scene]

如果您按下任何按钮,您将弹出第三个场景并返回第二个场景。

在第二种情况下,你直接从第一个场景到第三个场景,然后你的堆栈中会有以下内容

[first scene | third scene]

显然,如果弹出一个viewcontroller,那么它将返回到第一个场景,因为第二个场景从不在堆栈上。但是,您可以使用pushViewController:

将其推入堆栈

答案 1 :(得分:0)

这个poptoviewcontroller在这种情况下不起作用。首先,您必须导入您推送到控制器的类。 SecondViewController.h - (无效)btn2clicked:(ID)发送方{       SecondViewcontroller * Objsecond = [[Secondviewcontroller alloc] initwithNibName:@“Secondviewcontroller”bundle:nil];

[self.navigationcontroller pushtoviewcontroller:Objsecond animated:yes]; 你可以像这样使用..