如何在基于导航的应用程序中返回2个视图

时间:2012-01-19 11:28:34

标签: ios ios4 uinavigationcontroller

我创建了一个基于视图的4个视图应用程序。通过使用导航控制器我正在改变视图。在我的第3个视图中,有一个按钮。如果我点击该按钮,应用程序应该进入第一个视图(2个视图)。

我用过

[self.navigationController popViewControllerAnimated:YES]; 
[self.navigationController popViewControllerAnimated:YES];  

这不起作用。它只会转到上一页。

5 个答案:

答案 0 :(得分:12)

for (UIViewController *controller in self.navigationController.viewControllers)
{
    if ([controller isKindOfClass:[NeededViewController class]])
    {
        [self.navigationController popToViewController:controller
                                              animated:YES];
        break;
    }
}

答案 1 :(得分:4)

试试这个,并根据您的规范进行更改

-(void)goToMainCategoryView;
{
id object = nil;

for (UIViewController *viewControl in self.navigationController.viewControllers)
{
    if(viewControl.view.tag == 0)
    {
        object = viewControl;
    }
}
[self.navigationController popToViewController:object animated:YES];
}

答案 2 :(得分:4)

另一个通过索引选择UIViewController的简单根目录是使用:

NSArray *viewsArray = [self.navigationController viewControllers];
UIViewController *chosenView = [viewsArray objectAtIndex:1];
[self.navigationController popToViewController:chosenView animated:YES];
然后

chosenView将成为导航堆栈中的第二个视图(位置1)。如果你有一个大堆栈并且想要去特定的视图。

答案 3 :(得分:3)

使用

popToRootViewControllerAnimated:

一直回到顶视图控制器:

文档:

弹出除根视图控制器之外的堆栈上的所有视图控制器并更新显示。

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

popToViewController:animated:

返回特定的视图控制器,提供您想要访问的视图控制器。

文档:

弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

参数

的viewController 您希望位于堆栈顶部的视图控制器。

答案 4 :(得分:0)

同样的事情在swift 1.2 :: xcode:6.4

for controller: UIViewController in self.navigationController?.viewControllers as! [UIViewController] {
        if controller.isKindOfClass(YourViewController) {
            self.navigationController!.popToViewController(controller, animated: true)
        }
    }