【问题标题】:ARKit Swift - fatal error: unexpectedly found nil while unwrapping an Optional valueARKit Swift - 致命错误:在展开可选值时意外发现 nil
【发布时间】:2017-11-30 13:33:33
【问题描述】:

使用 ARKit 的非常简单的 Swift 代码。主要是让Xcode创建一个ARKit App并运行。我工作正常,显示 de Plane。

但是,当向 Storyboard 添加导航控制器并创建一个小菜单时,使用 Plane Demo 的条目并现在调用相同的 ARKit 示例,应用程序崩溃了。

    switch menuItemIndex {
    case 0:
        let controller = AvionViewController()
        self.navigationController?.pushViewController(controller, animated: true)

    default:
        print("something")
    }

崩溃是:

2017-06-27 08:08:26.317187-0500 ARDemo[1868:432582] [DYMTLInitPlatform] 平台初始化成功致命错误: 在展开可选值时意外发现 nil 2017-06-27 08:08:29.546679-0500 ARDemo[1868:432449] 致命错误:意外 在展开可选值时发现 nil (lldb)

也就是说,当直接运行 ARKit 演示 ViewController 时,它可以工作,但是当从另一个视图控制器调用 ViewController 时,应用程序会崩溃。

另一方面,当不使用@IBOutlet 时,以编程方式创建 ARSCNView 并添加到视图中,应用程序运行良好。

在 Objective-C 中做同样的事情不会产生任何崩溃。奇怪吗?

有什么想法吗?

【问题讨论】:

  • 该错误与此代码无关。看起来可能与 AcionViewContirller 的 init 方法有关。里面有什么?

标签: swift xcode arkit


【解决方案1】:

如果您使用故事板进行导航,则不应该这样实例化视图控制器。

您必须致电let controller = self.storyboard?.instantiateViewController(withIdentifier: "yourViewControllersStoryboardID")

【讨论】:

  • 很高兴它成功了。如果您觉得我的回答有用,请采纳。
  • 很高兴你找到了de plane, de plane... 但是,请注意,将导航控制器与 ARKit 一起使用并不是一个好主意。如果承载 ARSession 的视图控制器被推离屏幕,会话可能会停止跟踪,这意味着当您返回时,de plane 和任何其他锚点将不在同一个位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多