【发布时间】:2015-06-27 06:04:55
【问题描述】:
我正在 XCode 上开发 iOS 游戏。我有几个 SKScene,每个都与一个 UIViewController 类相关联。所以在每个视图控制器的 viewDidLoad 中,我创建了
SKView *skView = (SKView *)self.view
SKScene * scene = [whateverSKScene sceneWithSize:skView.bounds.size]
[skView present scene]
我想避开故事板。但是,当我将 ViewController 从第一个视图控制器呈现到下一个时,应用程序在“[skView present scene]”行崩溃,因为它认为新视图控制器的视图仍然是 UIView ('-[UIView presentScene:]: unrecognized selector sent实例)。
我该如何解决这个问题?具体来说,在创建第二个视图控制器(以编程方式)时,如何将其视图更改为 SKview 而不是 UIview 类型? (我应该注意我希望场景与视图控制器是 1:1 的,因为几乎所有场景都是弹出窗口,比如在游戏中弹出的暂停菜单或弹出设置等)
【问题讨论】:
-
如何创建第二个视图控制器。如果您不使用故事板/笔尖,则由您来创建 SKView 并将其分配为视图 - 您不能只检索它
-
视图控制器被创建并呈现在第一个视图控制器中,例如: UIVIewController *test = [[MyViewController2 alloc] init]; [self presentViewController:测试动画:YES];
-
那么在视图控制器的初始化程序中,您负责分配 SKView 并将其分配给控制器的视图属性。
-
我已经得出结论,但据我所知,我的解决方案不起作用(如下)。我将如何分配 SKview?下面的结果只是在我当前的屏幕上以灰色屏幕显示动画。 UIVIewController *test = [[MyViewController2 alloc] init]; test.view = [[SKView alloc] init]; [self presentViewController:测试动画:YES];
-
不行,你需要修改你自定义的UIViewController子类的
init方法来初始化你的SKView
标签: ios objective-c uiviewcontroller sprite-kit transition