簡體   English   中英

如何在關閉過程之間不顯示任何VC的情況下將viewController丟棄為rootViewController?

[英]How to dismiss a viewController to rootViewController without showing any VCs in between dismiss process?

假設我有以下VC:

RootVC-> VC A-> VC B

我正在使用present方法將視圖控制器從RootVC呈現給VC A,然后呈現給VCB。現在我在VC B上,我想使用以下方法從VC B退回到RootVC

self.view.window!.rootViewController?.dismiss(animated: true, completion: nil)

它可以正常工作,但是我仍然看到在解雇過程中出現了VCA。 然后,我嘗試這種方法

self.presentationController?.presentedViewController.dismiss(animated: true, completion: nil)

它也可以用於解散到根VC,但我仍然看到VC A正在運行。

我的問題是有沒有辦法在解雇過程中不顯示VC A? 我已經嘗試過動畫設置:false,但仍然得到相同的結果。 謝謝!

您需要將modalPresentationStyle更改為.custom custom將允許您在當前可見控制器的視圖為透明時查看presentingViewController視圖。

現在,當您想返回到當前呈現堆棧的根視圖時,需要調用方法dismissToRootViewController(animated: completion:)

在此方法的實現中,將使所有中間呈現視圖控制器視圖透明,這將使您從VC cRootVC消除動畫。

extension UIViewController {
    func dismissToRootViewController(animated: Bool, completion: (() -> Swift.Void)? = nil) {
        var viewController = self.presentingViewController
        while viewController?.presentingViewController != nil {
            viewController?.view.alpha = 0.0
            viewController = viewController?.presentingViewController
        }
        self.dismiss(animated: true) {
            viewController?.dismiss(animated: false, completion: completion)
        }
    }
}

您可以嘗試使用此方法:

navigationController?.popToRootViewController(animated: false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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