如何直接从第三个视图返回第一个视图?

时间:2011-09-20 20:48:51

标签: iphone

当我在第三个视图中触摸取消按钮时,我想直接返回第一个视图。我怎么能这样做?

这是代码。

// this part is in the first view.
SecondController *aSecondController = [[SecondController alloc] init];
UINavigationController *aNaviController = [[UINavigationController alloc] initWithRootViewController:aSecondController];
self.naviController = aNaviController;
[aNaviController release];
[aSecondController release];
[self.view addSubview:naviController.view];

// this part is in the second view.
ThirdController *thirdController = [[ThirdController alloc] initWithStyle:UITableViewStyleGrouped];             
[self.navigationController pushViewController:thirdView];
[thirdView release];

// this part is in the third view.
- (void)cancel {
    [self.navigationController popViewControllerAnimated:NO]; // this only goes to the second view.
}

popToViewController,popToRootViewController也只转到第二个视图。

3 个答案:

答案 0 :(得分:2)

如果您的根视图控制器是您所在的控制器,则可以使用 popToRootViewController:animated:方法。您还可以使用 popToViewController:animated:指定要在导航堆栈顶部找到的控制器。

答案 1 :(得分:1)

使用UINavigationControllers -popToRootViewControllerAnimated:

- (void)cancel {
    [self.navigationController popToRootViewControllerAnimated:NO];
}

如果您想要弹出特定视图控制器,可以使用popToViewController:animated:并使用viewControllers属性将视图控制器置于正确的索引处。

答案 2 :(得分:0)

在应用代理中设置导航控制器。使第一个视图控制器成为导航控制器的根控制器,而不是让第一个视图控制器拥有导航控制器。然后,您可以像其他答案所建议的那样使用-popToRootViewController:animated: