以编程方式创建ViewController时,如何将其视图设置为SKVIew类型?

use*_*886 1 transition objective-c uiviewcontroller ios sprite-kit

我在XCode上开发iOS游戏.我有几个SKScenes,每个都与UIViewController类相关联.所以在每个视图控制器的viewDidLoad中,我都创建了

SKView *skView = (SKView *)self.view
SKScene * scene = [whateverSKScene sceneWithSize:skView.bounds.size]
[skView present scene]
Run Code Online (Sandbox Code Playgroud)

我想避开故事板.但是,当我从第一个视图控制器向下一个视图控制器呈现ViewController时,应用程序在"[skView当前场景]"行崩溃,因为它认为新视图控制器的视图仍然是UIView(' - [UIView presentScene:]:无法识别的选择器已发送例如).

我怎样才能解决这个问题?具体来说,在创建第二个视图控制器(以编程方式)时,如何将其视图更改为SKview类型而不是UIview?(我应该注意到我希望视频控制器的场景是1:1,因为几乎所有这些都是弹出窗口,比如弹出游戏弹出的弹出菜单或弹出设置等)

Epi*_*yte 6

尝试在自定义ViewController上实现loadView方法,如下所示:

override func loadView() {
        self.view = SKView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
}
Run Code Online (Sandbox Code Playgroud)

这就是Apple的文档所述:

这是子类在不使用nib时应创建自定义视图层次结构的位置.永远不应该直接打电话.