我有4个视图控制器(A,B,C,D),它们按此顺序连接,导航控制器指向A.我的问题是有没有办法让我直接从A跳到C?
答案 0 :(得分:2)
您可以创建一个将A连接到C的UIStoryboardSegue
,然后使用segue中相应的ID调用performSegueWithIdentifier:
来触发它。
答案 1 :(得分:2)
尝试Unwind segue
答案 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)
如果你想回到特定的视图控制器
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。
第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];