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

1,739 阅读1分钟

iOS开发中,跳转页面最常用的就是push和present这两种方法。在push中有一个方法是popToRootViewControllerAnimated,返回到最底层的控制器。而在present方法中,只有一个 dismissViewControllerAnimated:<#(bool)#> completion:<#^(void)completion#> 返回上层控制器的方法。我们可以通过以下方法进行让我们的dismiss方法可以返回到最底层的控制器,这里就是用到了UIViewController中的一个属性是presentingViewController,这个是present到当前界面的上一个界面。
具体代码如下:

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