跳转到导航控制器中的特定视图

时间:2014-04-03 03:11:02

标签: ios objective-c uiviewcontroller uinavigationcontroller

我有4个视图控制器(A,B,C,D),它们按此顺序连接,导航控制器指向A.我的问题是有没有办法让我直接从A跳到C?

8 个答案:

答案 0 :(得分:2)

您可以创建一个将A连接到C的UIStoryboardSegue,然后使用segue中相应的ID调用performSegueWithIdentifier:来触发它。

答案 1 :(得分:2)

答案 2 :(得分:2)

适用于Swift 3

    let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
    for aViewController in viewControllers {
        if(aViewController is YourViewController){
           self.navigationController!.popToViewController(aViewController, animated: true);
        }
    }

答案 3 :(得分:1)

是的,您需要做的就是实例化视图控制器,然后pushViewController:animated:

UINavigationController应该为你完成剩下的工作,包括你准备好时的弹出。

希望有所帮助,这里是source

答案 4 :(得分:1)

如果您使用的是nib,那么此代码将有所帮助

NSArray *viewControllersArray=[self.navigationController viewControllers];
id viewController ;
UIViewController *homeVC=nil;
for(int i=0;i<[viewControllersArray count];i++)
{viewController = [viewControllersArray objectAtIndex:i];
    if([viewController isKindOfClass:[classname class]])
    { homeVC=[viewControllersArray objectAtIndex:i];
        break;
    }
}if(homeVC)
{
    [self.navigationController popToViewController:homeVC animated:YES];

}else{
    classname  *objViewController=[[classname alloc]init];
    [self.navigationController pushViewController:objViewController animated:YES];
    [objViewController release];
}

答案 5 :(得分:1)

SWIFT

如果你想回到特定的视图控制器

for viewcontroller in self.navigationController!.viewControllers as Array {
            if viewcontroller.isKindOfClass(HomeVC) { // change HomeVC to your viewcontroller in which you want to back.  
                self.navigationController?.popToViewController(viewcontroller as! UIViewController, animated: true)
                break
            }
        }

答案 6 :(得分:0)

像这样对待特定的视图控制器

[self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:1] animated:YES];

答案 7 :(得分:0)

是的你可以。为安全起见,我们假设您不知道View Controllers的连接顺序。所以,现在,你只需要一个分配给你的控制器的类,C。让我们说,它是ViewController_C.h。

步骤1:转到storyboard中的班级检查员,并将此ViewController_C课程分配给控制器C。

enter image description here

第2步:现在,在分配给控制器A的View Controller类中,编写以下方法。

-(int)getViewControllerIndex{
    int i=0;
    for(UIViewController *vc in [self.navigationController viewControllers]){
        if([vc isKindOfClass:[ViewController_C class]]){
            return i;
        }
        i++;
    }
    return 0;
}

然后在想要跳转到Controller,C。

时调用此方法
int index = [self getViewControllerIndex];
[self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:index] animated:YES];