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

时间:2015-06-27 06:04:55

标签: ios objective-c uiviewcontroller sprite-kit transition

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

这就是Apple的文档所述:

  

这是子类应创建自定义视图层次结构的位置   他们没有使用笔尖。永远不应该直接打电话。