【发布时间】:2016-10-13 15:58:50
【问题描述】:
当我执行下面的行时,我的目标视图控制器没有视觉呈现,但日志中没有错误:
performSegue (withIdentifier: "DetailsViewController", sender: self)
让我们从一个问题退后一步。想象一下我的成功设置:ViewController 已加载,并且在某些用户操作后,上面的行实际上会打开一个新的DetailsViewController。我测试了 - 一切都按预期工作 - 所以我知道它有效。
但是当我决定通过向我的ViewController 添加一个CamViewController 并在CamViewController 内的元素点击上执行segue 时,出现DetailsViewController 的问题就开始了,然后委托方法将此操作传递回ViewController 我将打开 DetailsViewController。使用这种架构设置,我在日志中没有任何错误,但视觉上没有任何内容打开。没有出现过DetailsViewController。
更多架构细节:
-
ViewController与self.present(camViewController, animated: true, completion: nil)一起呈现CamViewController -
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 - 不走运
【问题讨论】:
-
你能给我关于你正在添加到视图控制器的 camviewcontroller 的详细信息
-
没错,是
open class CamViewController: UIViewController, XYManagerDelegate -
你的日志什么也没说?也许关于视图层次结构
-
如何关闭 CamViewController?显示 CamViewController 后是否有可能有两个 DetailsViewController 实例?
标签: ios iphone swift uiviewcontroller swift3