!!!最近项目使用多层presentViewController跳转
[A presentViewController: B animated: YES]
[B presentViewController: C animated: YES]
......
问题所在:C如何直接回到A?
最开始没查找资料直接写的代理方法,在C里面写个协议,B来遵守
方案合集1
//在C里需要回到A的地方调用下面代码
[self dismissViewControllerAnimated:YES completion:^{
if ([self.delegate respondsToSelector:@selector(dismissVC)]) {
[self.delegate dismissVC];
}
}];
//在B里面遵循协议,并实现方法,这样B就消失了,此时页面就停在了A
[self dismissViewControllerAnimated:YES completion:nil];
总结:这个方法能够回到A但是中间会看到B界面,也就是说是一层一层回到A的,当然停留B的时间比较短,但是对于有UI强迫症的人来说就接受不了了,别急,往下看.
方案合集2
UIViewController *rootVC = self.presentingViewController;
while (rootVC.presentingViewController) {
rootVC = rootVC.presentingViewController;
}
[rootVC dismissViewControllerAnimated:YES completion:nil];
这里大家需要明白的地方:
B.presentingViewController = A;
A.presentedViewController = B;
总结: 此方法能够一步到位,直接就回到了最顶层的vc
方案合集3
返回到自己想要返回的层级VC
ABC顺序跳转
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
假如你有ABCD顺序的跳转
[self.presentingViewController.presentingViewController .presentingViewController dismissViewControllerAnimated:YES completion:nil];
记录开发的点滴,你我共同进步,加油!!!
网友评论