当我执行下面的行时,我的目标 View Controller 没有直观地呈现,但日志中没有错误:
performSegue (withIdentifier: "DetailsViewController", sender: self)
让我们从一个问题退一步。想象一下我的成功设置:ViewController
已加载,并且在某些用户操作后,上面的行实际上会打开一个新的 DetailsViewController
。我测试过 - 一切都按预期工作 - 所以我知道它有效。
但是,当我决定通过向我的 ViewController
添加 CamViewController
并执行 segue 来实现某些第三方框架时,出现 DetailsViewController
的问题就开始了元素点击 CamViewController
内部,然后委托(delegate)方法将此操作传递回 ViewController
,我将从中打开 DetailsViewController
。通过这种架构设置,我在日志中没有收到任何错误,但视觉上没有任何内容打开。从未出现过 DetailsViewController
。
更多架构细节:
ViewController
使用self.present(camViewController,animated: true,completion: nil) 行呈现
CamViewController
CamViewController
实现一个协议(protocol)来调用用户操作的某些方法ViewController
符合CamViewController
协议(protocol),并且委托(delegate)方法在用户操作上成功运行(日志显示它正在工作)- 使用 segue 标识符调用
DetailsViewController
已成功执行performSegue (withIdentifier: "DetailsViewController", sender: self)
但DetailsViewController
从未显示屏幕。 下面的这个方法会打印
prepare for segueOptional("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")
}
}
关于ios - swift 3 : PerformSegue WithIdentifier Not Displaying View Controller, 没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025774/