多层presentingViewController跳转返回处理

!!!最近项目使用多层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];

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,311评论 30 472
  • 亲爱的小飞侠: 你好,突然想给你写一封信。 你好像对什么都充满了兴趣,做饭、烘焙、旅行、摄影、读书、写字、画画。 ...
    偷时光的小飞侠阅读 3,180评论 0 1
  • 海芬/文 清风徐来 吹红了花朵 抚绿了大地 蜜蜂恋着花蕊 酿着那沁心的甜蜜 鸟儿停唱望着飘逸柳絮 争春小树展示叶片...
    海语天籁阅读 3,437评论 0 0
  • 大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了...
    Uzero阅读 4,619评论 0 5
  • 注: 以下内容仅是个人的学习总结。 作者介绍 《如何打造超级IP——一本系统阐述IP的力作》,作者秦阳,秋叶。这两...
    Bioconductor阅读 2,635评论 0 1