模态跳转 跳回到最上级视图控制器或者指定上级控制器

从VC1模态跳转到VC2再从VC2跳转到VC3后,使用方法dismissViewControllerAnimated只能从VC3跳转到VC2,那么如何才能直接跳转到VC1?


[self.presentingViewController.presentingViewController.presentingViewControllerdismissViewControllerAnimated:YEScompletion:nil];

使用上述方法可跳回到VC1,此方法在原理上也是遵循着VC3—VC2—VC1跳转逻辑,只是在VC2的过程中给隐藏掉了。

在这里要注意的是presentingViewController 和presentedViewController的区别;在苹果官方文档中对其有如下注释

// The view controller that was presented by this view controller or its nearest ancestor.  这个视图控制器是由他最近的父视图控制器模态跳转来

@property(nullable,nonatomic,readonly)UIViewController*presentedViewController

// The view controller that presented this view controller (or its farthest ancestor.)显示此视图控制器(或它的最上级父视图控制器)的视图控制器。

@property(nullable,nonatomic,readonly)UIViewController*presentingViewController

所以在此可以使用presenting跳转回任意上级的视图控制器,只需要调用多个presentingViewController方法即可实现。

你可能感兴趣的:(模态跳转 跳回到最上级视图控制器或者指定上级控制器)