自定义segue崩溃应用程序 - "不鼓励在分离的视图控制器上显示视图控制器"

时间:2018-03-25 18:14:33

标签: ios swift uikit segue ios11

首先,我知道有几十个问题与我的错误信息相同。但是,我的问题的背景完全不同,所以我无法使用之前的StackOverflow问题解决它。

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

我的应用程序崩溃时出现以下错误消息

  

在分离的视图控制器上呈现视图控制器是   气馁 - AppName.MainNavigationController:0x7ff19f054a00。

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

今天修改我的应用程序后,我有跟随控制器层次结构
     VC:A - > UINAVIGATION CONTROLLER:导航控制器的B - ROOT控制器:C - > *有这个CUSTOM SEGUE * VC:D

- > :代表一个segue。此segue由C(导航控制器的根控制器)

组成

这真的很奇怪,因为一切都很完美,现在我遇到了这个崩溃。

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

       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)

1 个答案:

答案 0 :(得分:1)

segue应该在VC A和navigationController B之间,因为VC C被认为是用于导航的rootVC,同样在segue VC A中没有显示导航控制器