从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方法即可实现。