无法施放类型的价值' UIView'到' SCNView'

时间:2016-02-10 18:29:37

标签: ios scenekit

应用程序正常构建,直到我开始向故事板添加按钮,然后我收到了上述错误。它停在我的GameViewController内的这行代码中。

let scnView = self.view as! SCNView

故事板本身的自定义类设置为GameViewController(SCNView没有选项)。 GameViewController本身继承自UIViewController。 我正在使用Xcode7.2。

4 个答案:

答案 0 :(得分:9)

确保还在文件顶部导入SceneKit。

import SceneKit

打开“Main.storyboard”文件。选择ViewController - >查看转到“Identity Inspector”并将Class字段更改为SCNView。 SceneKit Help

答案 1 :(得分:3)

如果您在没有故事板的情况下以编程方式设置所有这些内容,请确保执行以下步骤:

  1. 一般 - >部署信息 - >清除主界面部分,留空。
  2. 转到AppDelegate.swift并分配窗口的
  3. 的rootViewController

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow()
        let gameViewController = GameViewController()
        window?.rootViewController = gameViewController
        window?.makeKeyAndVisible()
        return true
    }

    1. 转到GameViewController,这里不会将GameViewController的视图转换为SCNView,而是创建SCNView实例并添加类似subView:
    2. let scnView = SCNView(frame: view.frame)
      view.addSubview(scnView)

答案 2 :(得分:0)

当我删除UIButton时也发生了同样的事情,UIButton也删除了UIView。因此,添加一个UIView并将类更改为SCNView

答案 3 :(得分:0)

如果您以编程方式执行此操作,请添加以下代码:

    override func loadView() {
        //sort of like changes type of self.view from UIView to SCNView
        self.view = SCNView()
    }