以编程方式创建 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.
我正在 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.