当我执行以下代码行时,我的目标视图控制器未直观显示,但日志中没有错误:

performSegue (withIdentifier: "DetailsViewController", sender: self)


让我们从问题中退后一步。想象一下我成功的设置:ViewController已加载,并且在执行某些用户操作后,上述行实际上将打开一个新的DetailsViewController。我测试了-一切都按预期工作-所以我知道它可以工作。

但是,当我决定通过在我的DetailsViewController中添加CamViewController并在ViewController内部点击元素进行segue,然后委托方法将该动作传递回CamViewController的方式来实现某种第三方框架时,出现ViewController的问题就开始了从中我打开DetailsViewController。通过这种体系结构设置,我不会在日志中出现任何错误,但是在视觉上没有任何打开的内容。从未出现过DetailsViewController

有关体系结构的更多详细信息:


ViewControllerCamViewController行中出现self.present(camViewController, animated: true, completion: nil)
CamViewController实现一个协议,以根据用户操作调用某些方法
ViewController符合CamViewController协议,并且委托方法在用户操作上成功运行(日志显示其正在运行)
使用segue标识符调用DetailsViewController已成功执行performSegue (withIdentifier: "DetailsViewController", sender: self),但是DetailsViewController从未显示在屏幕上。
下面的此方法打印prepare for segue Optional("DetailsViewController")听起来正确。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   print("prepare for segue \(segue.identifier)")
}



我也尝试添加super.performSegue-不走运

最佳答案

首先,我将您的segue代码更改为更多类似的内容。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "DetailsViewController"){
        print("prepare for segue DetailsViewController")
    }  else {
        print("prepare for segue other")
    }
}

10-07 19:39