Swift 3:PerformSegue WithIdentifier不显示视图控制器,没有错误

时间:2016-10-13 15:58:51

标签: ios iphone swift uiviewcontroller swift3

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

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

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

但是当我决定通过向DetailsViewController添加CamViewController并在ViewController内执行元素点击时执行segue来决定实施某些第三方框架时,问题就会出现CamViewController,然后委托方法将此操作传递回ViewController,我将从DetailsViewController打开DetailsViewController。通过这种架构设置,我在日志中没有错误,但在视觉上没有任何东西在打开。没有提出ViewController

架构的更多细节:

  • CamViewControllerself.present(camViewController, animated: true, completion: nil)CamViewController
  • ViewController实现了一个协议来调用用户操作的某些方法
  • CamViewController符合DetailsViewController协议,委托方法成功运行用户操作(日志显示工作正常)
  • 使用segue标识符调用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 - 没有运气

1 个答案:

答案 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")
    }
}