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

When programatically creating a ViewController, how can I set its view to be of type SKVIew?

我正在 XCode iOS 开发一款游戏。我有几个 SKScenes,每个 SKScenes 都与一个 UIViewController class 相关联。所以在每个视图控制器的 viewDidLoad 中,我创建

SKView *skView = (SKView *)self.view
SKScene * scene = [whateverSKScene sceneWithSize:skView.bounds.size]
[skView present scene]

我想避开故事板。但是,当我从第一个视图控制器到下一个视图控制器 presentViewController 时,应用程序在“[skView present scene]”行崩溃,因为它认为新视图控制器的视图仍然是 UIView ('-[UIView presentScene:]: unrecognized selector sent例如)。

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

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

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

Apple 的文档是这样描述的:

This is where subclasses should create their custom view hierarchy if they aren't using a nib. Should never be called directly.