我正在使用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,因为几乎所有场景都是弹出窗口,比如弹出游戏或弹出设置的暂停菜单等)
答案 0 :(得分:6)
尝试在自定义ViewController上实现loadView方法,如下所示:
override func loadView() {
self.view = SKView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
}
这就是Apple的文档所述:
这是子类应创建自定义视图层次结构的位置 他们没有使用笔尖。永远不应该直接打电话。