当我执行下面的行时,我的目标视图控制器没有直观显示,但日志中没有错误:
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
符合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
我也尝试添加pushnotifications
- 没有运气
答案 0 :(得分:0)
首先,我会将您的segue代码更改为更像这样的内容。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "DetailsViewController"){
print("prepare for segue DetailsViewController")
} else {
print("prepare for segue other")
}
}