【问题标题】:Using Navigation controller for a start screen ios使用导航控制器作为开始屏幕 ios
【发布时间】:2014-11-24 02:24:44
【问题描述】:

我已经到了需要为使用 sprite kit 制作的游戏制作开始屏幕的地步。我无法让它与我阅读和观看的任何代码和教程一起显示。

我想使用导航控制器/视图控制器从开始屏幕开始并将其链接到我的应用程序,但我不确定如何将我的游戏代码链接到视图控制器。

使用导航控制器,我如何将它作为@IBAction 声明拖到我的游戏代码中?谢谢。

用当前代码编辑:

ViewController.m:

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;

SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;

scene.viewController = self;

[skView presentScene:scene];
}

MyScene.h:

@interface MyScene : SKScene <SKPhysicsContactDelegate>

@property (strong, nonatomic) UIViewController *viewController;

@end

【问题讨论】:

  • SKScene * scene = [MyScene sceneWithSize:skView.bounds.size]; 更改为 MyScene * scene = [MyScene sceneWithSize:skView.bounds.size];
  • 太棒了,谢谢!看起来它正在工作。现在我只需要创建开始屏幕。抱歉所有问题,但我只是用导航控制器和视图控制器制作开始屏幕,对吗?再次感谢您!
  • 你的导航控制器应该连接到根segue。然后你的开始屏幕应该使用 rootViewController segue 和 navigationController 连接起来。最后,您的游戏 viewController 应该使用 push segue 连接到开始屏幕。
  • 再想一想,我认为您应该完全放弃 navigationController,因为它使用导航栏。相反,将您的开始屏幕设置为根并使用模式 segue 到游戏 viewController。

标签: ios objective-c sprite-kit


【解决方案1】:

此答案基于here,但已翻译成Objective-C。

您面临的问题是 SKScene 不能直接访问它的 viewController,而只能访问它所在的视图。您需要手动创建指向它的指针。这可以通过为 SKScene 创建一个属性来完成:

@interface GameScene : SKScene

@property (strong, nonatomic) UIViewController *viewController;

@end

然后,在 viewController 类中,就在 [skView presentScene:scene]; 之前

scene.viewController = self;

现在,您可以直接访问 viewController。只需在这个 viewController 上调用 segue:

-(void)goToHomeScreen {
    [self.viewController.navigationController popToRootViewControllerAnimated:YES];
}

您可以以类似的方式执行其他 navigationController 操作。

【讨论】:

  • scene.viewController = self; 出现错误。它说“在'SKScene'类型的对象上找不到属性'viewController'”你知道如何解决它吗?一切都在正确的地方。
  • 你在SKScene的头文件中声明了属性吗?
  • @property 是声明属性的关键字。按原样使用代码。
  • 是的,我的代码就是上面的。抱歉,当我尝试发布代码时,我的评论搞砸了。
  • 请在您的问题中发布来自 viewController 的 presentScene 代码作为编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多