Cocos2dとStoryboardを組み合わせる
iOS初心者にはなかなか大変でした。
環境
Tool | Version |
---|---|
XCode | 4.6.1 |
Cocos2d | v2.1-rc1 |
Storyboardを作成
プロジェクトはCocos2dの初期テンプレートを使ってます。 適当に。closeボタンを押したらCocos2dの画面に戻りたい。名前はStoryboard.storybordとかにしてます。
StoryboardのためにUIViewControlerを作成
UIViewControllerを継承したStoryboardViewControllerクラスを作ります。作成したあとはStoryboardを作成したStoryboardViewControllerをCustom Classとして設定します。ついでにStoryboardのCloseボタンからIBActionを接続しておきます。
// StoryboardViewController.h #import <UIKit/UIKit.h> @interface StoryboardViewController : UIViewController - (IBAction)backCocos2d:(id)sender; @end // StoryboardViewController.m #import "StoryboardViewController.h" #import "AppDelegate.h" @interface StoryboardViewController () @end @implementation StoryboardViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)backCocos2d:(id)sender { } @end
Cocos2dからStoryboard画面へ遷移
めんどくさいんでハローワールドのコードをそのまま使います。LeaderboardのボタンをStoryboardの呼び出しに変更します。
// HelloWorldLayer.m // CCMenuItem *itemLeaderboard = [CCMenuItemFont itemWithString:@"Leaderboard" block:^(id sender) { CCMenuItem *itemLeaderboard = [CCMenuItemFont itemWithString:@"Storyboard" block:^(id sender) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:[NSBundle mainBundle]]; UIViewController *initialViewController = [storyboard instantiateInitialViewController]; [[CCDirector sharedDirector] presentViewController:initialViewController animated:YES completion:nil]; }];
[CCDirector sharedDirector]でCocos2dが持っているUIViewControllerを取得できるみたいです。あとはインスタンス化したStoryboardからCustom Classに設定したUIViewControllerを取得してコントロールを渡して上げればOKです。
実行してStoryboard画面が見えればOK。
StoryboardからCocos2d画面へ戻る
接続していたIBActionメソッドに書きます。
// StoryboardViewController.m - (IBAction)backCocos2d:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; }
自由に行き来ができるようになったはず。
参考サイトと書籍
プロの力を身につける iPhone/iPadアプリケーション開発の教科書
- 作者: 藤田泰介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/02/26
- メディア: 大型本
- クリック: 20回
- この商品を含むブログを見る