[英]How to dismiss multiple ViewController instead of initial ViewController
我有這種情況
LoginViewController - initial ViewController
)目前的NavigationControllerB
(在NavigationControllerB中,我有很多ViewController) NavigationControllerB
當前的ViewControllerC
ViewControllerC
當前ViewControllerD
在ViewControllerD
,當登錄部分過期時,我將移回LoginViewController
因此我想關閉所有ViewControlelr而不是LoginViewController
?
有什么想法嗎? 任何幫助或建議將不勝感激
我曾這樣嘗試過:成功關閉ViewControllerD
,我向ViewControllerC
發送了一個塊,然后繼續關閉ViewControllerC
。 之后,我將解散NavigationControllerB
,但是NavigationControllerB
具有許多ViewController
因此我需要編寫許多block code
所以我認為這不是一個好主意
如果LoginViewController是您的initialViewController,則可以使用以下代碼:
//dismiss all presented view controllers if any
UIViewController *vc = self.presentingViewController;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:NULL];
你可以做類似的事情,
[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{
// perform task after completion
}];
確保該父ViewController的數量。 這是根據您的情況解雇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,希望這會有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.