当我执行以下代码行时,我的目标视图控制器未直观显示,但日志中没有错误:
performSegue (withIdentifier: "DetailsViewController", sender: self)
让我们从问题中退后一步。想象一下我成功的设置:
ViewController
已加载,并且在执行某些用户操作后,上述行实际上将打开一个新的DetailsViewController
。我测试了-一切都按预期工作-所以我知道它可以工作。但是,当我决定通过在我的
DetailsViewController
中添加CamViewController
并在ViewController
内部点击元素进行segue,然后委托方法将该动作传递回CamViewController
的方式来实现某种第三方框架时,出现ViewController
的问题就开始了从中我打开DetailsViewController
。通过这种体系结构设置,我不会在日志中出现任何错误,但是在视觉上没有任何打开的内容。从未出现过DetailsViewController
。有关体系结构的更多详细信息:
ViewController
在CamViewController
行中出现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")
}
}