2014-11-24 76 views
2

我已經到了需要爲使用sprite套件製作的遊戲製作開始屏幕的地步。我無法讓它顯示任何我已閱讀和觀看的代碼和教程。使用導航控制器作爲開始屏幕ios

我想使用導航控制器/視圖控制器從開始屏幕開始並將其鏈接到我的應用程序,但我不知道如何將我的遊戲代碼鏈接到視圖控制器。

使用導航控制器,我會如何將它作爲@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 
+1

看看這個答案:http://stackoverflow.com/a/27056327/2043580 – ZeMoon 2014-11-24 07:06:58

+0

更改'SKScene *場景= [MyScene sceneWithSize:skView.bounds.size];'到'MyScene *場景= [MyScene sceneWithSize:skView.bounds.size];' – ZeMoon 2014-11-24 07:46:47

+0

太棒了,謝謝!它看起來像在工作。現在我只需創建開始屏幕。對不起所有的問題,但我只是做了導航控制器和視圖控制器的開始屏幕,對不對?再次謝謝你! – 2014-11-24 07:50:16

回答

2

這個答案是基於一個here,但已被翻譯成目標-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。

+0

謝謝你的幫助! – 2014-11-24 07:21:00

+0

我得到了scene.viewController = self;的錯誤。它說「在'SKScene'類型的對象上找不到」Property'viewController'「你知道如何解決它嗎?一切都在正確的地方。 – 2014-11-24 07:27:22

+0

你是否在SKScene的頭文件中聲明瞭屬性? – ZeMoon 2014-11-24 07:28:35