美文网首页iOS开发常用知识点
控制器A presentViewController B 然后

控制器A presentViewController B 然后

作者: 一个城市猎人 | 来源:发表于2016-06-07 20:44 被阅读819次

    dissmissViewController到跟控制器

    不知道你有没有遇到过这个问题,控制器A presentViewController B 然后B presentViewController C,
    现在呢我想在C 控制器里通过dissmissViewController到A

    说到这里,再延伸下控制器的两个可能很多人都没注意的两个只读属性:presentedViewController和presentingViewController,他们分别是被present的控制器和正在presenting的控制器。 控制器A和B,[A presentViewController B animated:YES completion:nil]; 那么A相对于B就是presentingViewController,B相对于A是presentedViewController,即这个时候  
        B.presentingViewController = A;
        A.presentedViewController = B;
    了解之后就解决一下怎么从C控制器dismiss到A控制器呢!!哦吼吼见证奇迹的时候来了:
    在C控制器dismiss方法里面:

    UIViewController *rootVC = self.presentingViewController;
    while (rootVC.presentingViewController) {
    rootVC = rootVC.presentingViewController;
    }
    [rootVC dismissViewControllerAnimated:YEScompletion:nil];
    这样就可以了,和刚才的理论是吻合的!

    相关文章

      网友评论

      • Echo126:你好,Tabbar控制器有两个带导航的子控制器A,B,比如在B里经过push C ,push D,present E,push F 之后,如果此时手机收到通知,点击通知后需要直接显示出B控制器。怎么直接回到B控制器?(前提是当前控制器可能是经过多次push和present之后的控制器,而且不知道当前控制器是push还是present的,反正就是想直接回到B控制器界面)
      • 253271352e3e:楼主 ,我现在A presentViewController B,B presentViewController C,C presentViewController D,
        然后我想D直接回到B,为什么代码是
        UIViewController *rootVC = self.presentingViewController;
        rootVC = rootVC.presentingViewController;
        [rootVC dismissViewControllerAnimated:YES completion:nil];
        此时的rootVC不就是B了吗,B执行dissmiss自己不应该也没有了吗?
        一个城市猎人:@火焰鼠 [rootVC dismissViewControllerAnimated:YES completion:nil];中的rootVC的B控制器,B控制器执行dismissViewControllerAnimated是将Bpresent的控制器C给dismiss掉.
      • Scott昵称被占用: Hi 楼主 我在跳转ViewController 时 关闭当前的ViewController 可以吗 ,怎么实现的
        比如我当前在A 跳转B的同时 关闭A :blush:
        涛涛丶:@Scottsnail 您好 有也有这个需求 请问你是怎么解决的??
        一个城市猎人: @Scottsnail 控制器有个dismiss方法是让控制器关闭的,dismiss一下试试吧

      本文标题:控制器A presentViewController B 然后

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