自定义 segue 使应用程序崩溃 - "Presenting view controllers on detached view controllers is discouraged"

Custom segue crashes app - "Presenting view controllers on detached view controllers is discouraged"

首先,我知道有几十个问题和我的错误信息一样。但是,我的问题的上下文完全不同,所以我无法用以前的 Whosebug 问题解决它。

我创建了一个自定义 Segue,昨天一切正常。 今天,我进一步修改了我的应用程序,突然间我的应用程序不再运行了。

我的应用程序崩溃并显示以下错误消息

Presenting view controllers on detached view controllers is discouraged - AppName.MainNavigationController: 0x7ff19f054a00.

崩溃点是:sourceViewController.present(destinationViewController, animated: false, completion: nil)

今天修改我的应用程序后,我有以下控制器层次结构
VC: A -> UINAVIGATION CONTROLLER: B - NAVIGATIONCONTROLLER 的根控制器: C -> * WITH THIS CUSTOM SEGUE * VC: D

-> : 代表一个segue。这个segue是从C做的,导航控制器的根控制器

这真的很奇怪,因为一切正常,但现在我遇到了崩溃。

这是我自定义转场的执行方法:

       override func perform() {


    //.... custom segue animation......
    //.....

        UIView.animate(withDuration: DURATION, animations: {

// Some more animations
            self.bubble.transform = CGAffineTransform.identity
            destinationView?.transform = CGAffineTransform.identity
            destinationView?.alpha = 1
            destinationView?.center = sourceCenter!
            destinationView?.layer.cornerRadius = 1


        }, completion: { (_) in

            self.bubble.isHidden = true
            destinationView?.clipsToBounds = defaultClipsToBoundsSettings!

            //finally showing it
            DispatchQueue.main.async
                {
//********* THIS IS THE CRASH POINT
                 sourceViewController.present(destinationViewController, animated: false, completion: nil)


            }

        })



    }

这里我从我的按钮操作方法执行 segue:

castedRootController.performSegue(withIdentifier: "ViewShare", sender: nil)

segue 应该在 VC A 和 navigationController B 之间,因为 VC C 被认为是导航的根 VC,也在 segue 期间 VC A 没有显示 navigationController