2014-11-24 2 views
2

Я пришел к тому моменту, когда мне нужно создать начальный экран для моей игры, составленный с помощью комплекта спрайтов. Я не могу заставить его показать какой-либо код и учебники, которые я прочитал и смотрел.Использование навигационного контроллера для стартового экрана 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

+0

Изменить 'SKScene * scene = [MyScene sceneWithSize: skView.bounds.size];' to 'MyScene * scene = [MyScene sceneWithSize: skView.bounds.size]; ' – ZeMoon

+0

Удивительно, спасибо! Похоже, он работает. Теперь мне просто нужно создать начальный экран. Извините за все вопросы, но я просто запустил начальный экран с контроллерами навигации и viewcontrollers, не так ли? Еще раз спасибо! –

ответ

2

Этот ответ основан на одном here, но была переведена на Objective -С.

Проблема, с которой вы сталкиваетесь, заключается в том, что у SKScene нет прямого доступа к его viewController, а только к виду, в котором оно содержится. Вам нужно создать указатель на него вручную. Это может быть сделано путем создания свойства для SKScene:

@interface GameScene : SKScene 

@property (strong, nonatomic) UIViewController *viewController; 

@end 

Тогда в классе ViewController, как раз перед [skView presentScene:scene];

scene.viewController = self; 

Теперь вы можете получить доступ к ViewController непосредственно. Просто вызовите SEGUE на этом ViewController:

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

Вы можете выполнять другие операции navigationController аналогичным образом.

+0

Благодарим вас за помощь! –

+0

Я получаю сообщение об ошибке с помощью scene.viewController = self ;. Он говорит: «Свойство viewController» не найдено на объекте типа «SKScene» «Знаете ли вы, как его исправить? Все в нужных местах. –

+0

Вы объявили свойство в заголовочном файле SKScene? – ZeMoon

Смежные вопросы