我有这个案子
LoginViewController - initial ViewController
)现在NavigationControllerB
(在NavigationControllerB中我有很多ViewController)NavigationControllerB
目前ViewControllerC
ViewControllerC
目前ViewControllerD
在ViewControllerD
中,当登录部分过期后,我将返回LoginViewController
,因此我想解雇所有ViewControlelr而不是LoginViewController
?
有什么想法吗? 任何帮助或建议将非常感谢
我尝过这样的方法:当我解雇ViewControllerD
成功时,我会向ViewControllerC
发送一个阻止,然后我继续关闭ViewControllerC
。
在那之后我会解雇NavigationControllerB
,但NavigationControllerB
有很多ViewController
所以我需要写很多block code
所以我认为这不是一个好主意
答案 0 :(得分:2)
如果LoginViewController是您的initialViewController,您可以使用以下代码:
//dismiss all presented view controllers if any
UIViewController *vc = self.presentingViewController;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:NULL];
答案 1 :(得分:1)
你可以做点什么,
[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{
// perform task after completion
}];
确保父视图控件的数量。这是根据您的场景解除paraentview控制器的示例。
更新:
尝试这样的事情,
[self dismissViewControllerAnimated:YES completion:^{
[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{
// perform task after completion
}];
}];
更新2:
[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{
[self dismissViewControllerAnimated:YES completion:nil];
}];
可以执行类似的操作,关闭所有父vc,然后关闭当前的vc 希望这会有所帮助:)