美文网首页iOS开发知识小集iOS学习开发
iOS中跳转去一个特定的界面 - self.navigation

iOS中跳转去一个特定的界面 - self.navigation

作者: 小蜜蜂Bee | 来源:发表于2019-10-09 15:51 被阅读0次

    开发中有没有遇上这样的一个需求,就是操作了几个好几个流程,也跳转了好几个页面了,但是最后的时候需要跳转回一个特定的页面,或者跳转去一个特定的页面。注意这里的“回”和“去”的区别,“回”的话意思就是说,你曾悄悄地从这里走过;“去”的话意思就是说,要你悄悄地前往那里。那么我们首先说说,回到曾经来过的地方,就是曾经跳转进来的控制器页面。

    1、你曾悄悄地从这里走过的情况,即self.navigationController.viewControllers包含需要跳转回的控制器。
                NSArray *vcsArr =  self.navigationController.viewControllers;
                
                for (UIViewController *controller in vcsArr) {
                    
                    if ([controller isKindOfClass:[XMFViewController class]]) {
                        
                        [self.navigationController popToViewController:controller animated:YES];
                    }
                    
                }
    
    2、要你悄悄地前往那里的情况,即self.navigationController.viewControllers不包含需要跳转回的控制器,但是需要你跳转进去,而且不影响逻辑。

    如下图所示,self.navigationController.viewControllers没有包含GBABankListViewController的控制器,但是我们的要求却是要跳转去这个页面

    打印栈里的控制器

    那么就直接上我写的代码:


    跳转去指定页面
               NSArray *vcsArr =  self.navigationController.viewControllers;
                
                NSMutableArray *vcsMutArr = [[NSMutableArray alloc]initWithArray:vcsArr];
                
                for (UIViewController *controller in vcsArr) {
                    
                    if ([controller isKindOfClass:[GBAMyWalletViewController class]]) {
                        
                        //创建要跳转去的控制器
                        GBABankListViewController *bankListVc = [[GBABankListViewController alloc]init];
                        //获取查找出来的控制器index
                        NSInteger index = [vcsMutArr indexOfObject:controller];
                        //把要跳转去的控制器插入数组
                        [vcsMutArr insertObject:bankListVc atIndex:index + 1];
                         //再次给self.navigationController.viewControllers赋值                   
                        [self.navigationController setViewControllers:vcsMutArr];
                        //跳转去控制器
                        [self.navigationController popToViewController:bankListVc animated:YES];
                        
                    }
                    
                }
    
    

    这里要注意一下为什么把GBAMyWalletViewController作为isKindOfClass的依据是因为进入GBABankListViewController后,返回的页面就是GBAMyWalletViewController,然后就可以啦!

    如果以上的分享帮助到你了,欢迎分享,更欢迎赞赏,也可以直接打开支付宝、微信、QQ的扫一扫功能直接扫下面的支付宝、微信、QQ三合一打赏码进行打赏支持作者创作,感谢感谢!

    小蜜蜂的多合一收款码

    欢迎和我交流,QQ:834537795(小蜜蜂)

    相关文章

      网友评论

        本文标题:iOS中跳转去一个特定的界面 - self.navigation

        本文链接:https://www.haomeiwen.com/subject/empgyctx.html