美文网首页
多层presentingViewController跳转返回处理

多层presentingViewController跳转返回处理

作者: 姚姚先生 | 来源:发表于2017-06-05 15:56 被阅读245次

    !!!最近项目使用多层presentViewController跳转

    [A presentViewController: B animated: YES]
    [B presentViewController: C animated: YES]
    ......

    问题所在:C如何直接回到A?

    最开始没查找资料直接写的代理方法,在C里面写个协议,B来遵守

    方案合集1

    //在C里需要回到A的地方调用下面代码

      [self dismissViewControllerAnimated:YES completion:^{
            if ([self.delegate respondsToSelector:@selector(dismissVC)]) {
                 [self.delegate dismissVC];
               }
        }];
    

    //在B里面遵循协议,并实现方法,这样B就消失了,此时页面就停在了A

    [self dismissViewControllerAnimated:YES completion:nil];
    

    总结:这个方法能够回到A但是中间会看到B界面,也就是说是一层一层回到A的,当然停留B的时间比较短,但是对于有UI强迫症的人来说就接受不了了,别急,往下看.

    方案合集2

       UIViewController *rootVC = self.presentingViewController;
        while (rootVC.presentingViewController) {
    
          rootVC = rootVC.presentingViewController;
             
                                         }
        [rootVC dismissViewControllerAnimated:YES completion:nil];
    
    
    这里大家需要明白的地方:
    B.presentingViewController = A;
    A.presentedViewController = B;
    

    总结: 此方法能够一步到位,直接就回到了最顶层的vc

    方案合集3

    返回到自己想要返回的层级VC
    
    ABC顺序跳转
    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
    
    假如你有ABCD顺序的跳转
    [self.presentingViewController.presentingViewController .presentingViewController dismissViewControllerAnimated:YES completion:nil];
    

    记录开发的点滴,你我共同进步,加油!!!

    相关文章

      网友评论

          本文标题:多层presentingViewController跳转返回处理

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