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

Ios 以编程方式创建ViewController时,如何将其视图设置为SKVIew类型?,ios,objective-c,uiviewcontroller,sprite-kit,transition,Ios,Objective C,Uiviewcontroller,Sprite Kit,Transition,我正在XCode上用iOS开发一个游戏。我有几个场景,每个场景都与UIViewController类关联。因此,在每个视图控制器的viewDidLoad中,我创建 SKView *skView = (SKView *)self.view SKScene * scene = [whateverSKScene sceneWithSize:skView.bounds.size] [skView present scene] 我想避开情节提要。但是,当我将ViewController从第一个视图控制器

我正在XCode上用iOS开发一个游戏。我有几个场景,每个场景都与UIViewController类关联。因此,在每个视图控制器的viewDidLoad中,我创建

SKView *skView = (SKView *)self.view
SKScene * scene = [whateverSKScene sceneWithSize:skView.bounds.size]
[skView present scene]
我想避开情节提要。但是,当我将ViewController从第一个视图控制器呈现到下一个视图控制器时,应用程序在[skView present scene]行崩溃,因为它认为新视图控制器的视图仍然是UIView'-[UIView presentScene:]:发送到实例的无法识别的选择器

我怎样才能解决这个问题?具体来说,当以编程方式创建第二视图控制器时,如何将其视图更改为SKview而不是UIview类型?
我应该注意,我希望场景与视图控制器的比例为1:1,因为几乎所有场景都是弹出窗口,如游戏上方的暂停菜单弹出窗口或设置弹出窗口等,请尝试在自定义视图控制器上实现loadView方法,如下所示:

override func loadView() {
        self.view = SKView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
}
这是苹果公司的文档所述:

如果需要,子类应该在这里创建自定义视图层次结构 他们没有用笔尖。不应该直接呼叫


如何创建第二个视图控制器。如果您没有使用storyboard/nib,那么就由您创建SKView并将其指定为视图-您不能仅检索它view controller是在第一个视图控制器中创建和显示的,如:UIVIewController*test=[[MyViewController2 alloc]init];[自我呈现视图控制器:测试动画:是];因此,在视图控制器的初始化器中,您负责分配SKView,并将其分配给控制器的view属性。我已设法得出结论,但就我所知,我的解决方案在下面不起作用。如何分配SKview?下面的结果只是在我当前的灰色屏幕上动画。UIVIewController*测试=[[MyViewController2 alloc]init];test.view=[[SKView alloc]init];[自我呈现视图控制器:测试动画:是];否,您需要修改自定义UIViewController子类的init方法来初始化SKVIEW。您应该使用UIScreen.mainScreen.applicationFrame,而不是硬编码的矩形。