Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将segue doing pop设置为root并在故事板中推送一个新的?_Ios_Objective C_Storyboard_Xib - Fatal编程技术网

Ios 如何将segue doing pop设置为root并在故事板中推送一个新的?

Ios 如何将segue doing pop设置为root并在故事板中推送一个新的?,ios,objective-c,storyboard,xib,Ios,Objective C,Storyboard,Xib,我想制作一个segue,使导航控制器poptroot,然后将一个新的控制器推入导航控制器。 e、 g现在控制器层次结构是 navigationController->rootcontroller->controllerA ->controllerB 我想在控制器B中创建一个segue performe,该segue将使层次结构 navigationController->rootcontroller-> controllerC 这可能吗?您可以使用for循环弹

我想制作一个segue,使导航控制器poptroot,然后将一个新的控制器推入导航控制器。 e、 g现在控制器层次结构是

 navigationController->rootcontroller->controllerA ->controllerB
我想在控制器B中创建一个segue performe,该segue将使层次结构

navigationController->rootcontroller-> controllerC

这可能吗?

您可以使用for循环弹出到根目录或您想要的位置,并使用相同的方法向前推进:

// For Pop

     NSArray *viewControllers = [[self navigationController] viewControllers];
        for( int i=0;i<[viewControllers count];i++){
            id obj=[viewControllers objectAtIndex:i];
            if([obj isKindOfClass:[ViewControllerYouWantToStopOn class]]){
                [[self navigationController] popToViewController:obj animated:YES];
                return;
            }
        }

//For Push

 NSArray *viewControllers = [[self navigationController] viewControllers];
        for( int i=0;i<[viewControllers count];i++){
            id obj=[viewControllers objectAtIndex:i];
            if([obj isKindOfClass:[ViewControllerYouWantToJumpOn class]]){
                [[self navigationController] pushViewController:obj animated:YES];
                return;
            }
        }
//用于Pop
NSArray*ViewController=[[self-navigationController]ViewController];

对于(int i=0;i您可以使用for循环弹出到根目录或您想要的位置,并使用相同的方法向前推进:

// For Pop

     NSArray *viewControllers = [[self navigationController] viewControllers];
        for( int i=0;i<[viewControllers count];i++){
            id obj=[viewControllers objectAtIndex:i];
            if([obj isKindOfClass:[ViewControllerYouWantToStopOn class]]){
                [[self navigationController] popToViewController:obj animated:YES];
                return;
            }
        }

//For Push

 NSArray *viewControllers = [[self navigationController] viewControllers];
        for( int i=0;i<[viewControllers count];i++){
            id obj=[viewControllers objectAtIndex:i];
            if([obj isKindOfClass:[ViewControllerYouWantToJumpOn class]]){
                [[self navigationController] pushViewController:obj animated:YES];
                return;
            }
        }
//用于Pop
NSArray*ViewController=[[self-navigationController]ViewController];

对于(int i=0;i您希望将segue do pop设置为root。这可以通过使用
展开Segues
实现。有关这方面的更多详细信息,请参阅此
Apple
文档


要推送到新VC,您只需推送故事板。

您想将segue doing pop设置为root。这可以通过使用
展开Segues
来实现。有关这方面的更多详细信息,请参阅此
Apple
文档


要推送到新的VC,您只需推送故事板即可。

这段代码适合我:

self.performSegue(withIdentifier: "segue_id", sender: self)
var navigationArray = self.navigationController?.viewControllers
var i = navigationArray!.count - 2
while i > 0 {
    navigationArray!.remove(at: i)
    i = i - 1
}
self.navigationController?.viewControllers = navigationArray!

这段代码对我有用:

self.performSegue(withIdentifier: "segue_id", sender: self)
var navigationArray = self.navigationController?.viewControllers
var i = navigationArray!.count - 2
while i > 0 {
    navigationArray!.remove(at: i)
    i = i - 1
}
self.navigationController?.viewControllers = navigationArray!

进一步澄清您的要求。@vaibhav我已经编辑了我的问题,您现在可以得到我的问题吗?如果rootView嵌入了navigationCont,您可以对任何vc执行segue。您的意思是我可以执行以下两个步骤1)弹出到根目录2)在一个segue中推送控制器?如何设置?困惑,如何一次执行这两个操作。请进一步澄清您的要求。@vaibhav我已经编辑了我的问题,您现在可以获取我的问题吗?如果rootView嵌入了navigationCont,您可以对任何vc执行segue。您的意思是我可以执行以下两个步骤1)弹出到根目录2)在一个segue中推送控制器?如何设置?困惑,你如何一次执行这两个动作。因为我现在使用的是故事板,我想以故事板的方式进行这种转换,谢谢@Vinnet Raibacause我现在使用的是故事板,我想以故事板的方式进行这种转换,感谢@Vinnet rai提供了一个有用的答案,这个反应需要扩展。解释为什么这是问题的答案。为了得到有用的答案,这个反应需要扩展。解释为什么这是问题的答案。