关闭

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

标签: uiviewcontrollerObject-Cios开发
3782人阅读 评论(0) 收藏 举报
分类:

如题,苹果自带的是没有直接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掉。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:100050次
    • 积分:1944
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:12篇
    • 译文:0篇
    • 评论:8条
    最新评论