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

Ios 如何在基于导航的应用程序中返回2个视图,ios,ios4,uinavigationcontroller,Ios,Ios4,Uinavigationcontroller,我创建了一个包含4个视图的基于视图的应用程序。通过使用导航控制器,我正在更改视图。在我的第三视图中,有一个按钮。如果我点击该按钮,应用程序将进入第一个视图(返回两个视图) 我用过 [self.navigationController popViewControllerAnimated:YES]; [self.navigationController popViewControllerAnimated:YES]; 这是行不通的。它只转到上一页。使用 popToRootViewControl

我创建了一个包含4个视图的基于视图的应用程序。通过使用导航控制器,我正在更改视图。在我的第三视图中,有一个按钮。如果我点击该按钮,应用程序将进入第一个视图(返回两个视图)

我用过

[self.navigationController popViewControllerAnimated:YES]; 
[self.navigationController popViewControllerAnimated:YES];  
这是行不通的。它只转到上一页。

使用

popToRootViewControllerAnimated:
要一直返回到俯视图控制器,请执行以下操作:

文件:

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

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

要返回到特定视图控制器,请提供要转到的视图控制器

文件:

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

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

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

尝试此操作,并根据您的规范进行更改

-(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];
}

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

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

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

在swift 1.2::xcode:6.4中也是这样

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

@umakanta:如果我的回答对你有帮助,那么就接受或投票支持我的回答:多么甜蜜。工作完美。
for controller: UIViewController in self.navigationController?.viewControllers as! [UIViewController] {
        if controller.isKindOfClass(YourViewController) {
            self.navigationController!.popToViewController(controller, animated: true)
        }
    }