iOS dismiss到最底层控制器的方法

苹果自带的是没有直接dismissToRootViewController之类的方法,如果需要直接dismiss到最底层的那个控制器,可以自己写一个dismissToRootViewController方法,代码如下:

-(void)dismissToRootViewController
{
    UIViewController *vc = self;
    while (vc.presentingViewController) {
        vc = vc.presentingViewController;
    }
    [vc dismissViewControllerAnimated:YES completion:nil];
}

解释两个属性:
presentingViewController和presentedViewController

A----(present)-----B----(present)-----C

那么A就是B的presentingViewController.

C就是B的presentedViewController.

另外,self调用dismiss方法会的时候会判断self.presentedViewController是否存在,如果存在,就只会将self.presentedViewController给dismiss掉,自己不会dismiss掉。所以我们一直遍历到最底层的控制器,然后调用dismiss方法,就会将所有的presentedViewController给dismiss掉。

https://blog.csdn.net/nunchakushuang/article/details/45198969

你可能感兴趣的:(iOS dismiss到最底层控制器的方法)