簡體   English   中英

如何關閉多個ViewController而不是初始ViewController

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM