私は2つのrootViewControllerを持つゲームを持っています.1つはメニュー用、もう1つはゲームそのものです。2台のルートビューコントローラを交換する方法
ユーザーがゲームとメニューを切り替えると、rootViewControllerを切り替える必要があります。最終的に私の質問は、これを行うための最善の方法は何ですか?または、2つのrootViewControllerを持つよりも意味をなさないスタックを切り替える別の方法がありますか?
私はappDelegateにnavigationControllerのインスタンスを持っています。私はrootViewControllerを切り替えたいときは、新しいnavigationControllerを初期化し、それをrootVCに設定し、appDelegateのnavControllerのインスタンスに設定します。メニューからゲームに移行するコードは、次のようになります。
//Initialise the new Root Controller
GameViewController *rootController = [[GameViewController alloc] init];
UINavigationController *newNavController = [[UINavigationController alloc] initWithRootViewController:rootController];
[rootController release];
newNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newNavController animated:YES];
//Setting the appDelegate's navController to the new navController allows the menu to dealloc.
//This must happen AFTER the newNavController has been loaded.
MiniAppDelegate *appDelegate = (MiniAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.navController = newNavController;
[newNavController release];
この悪い練習ですか?私はバックグラウンドから再開したときに私のアプリに問題があり、これがその原因になっていると思う。
あなたのゲームを構築するためにCocos2dフレームワークを使用していない具体的な理由はありますか? Cocos2dでは、さまざまなシーンとレイヤーを切り替えることが非常に簡単です。 – azamsharp
私はCocos2dを最初に作ったときに見たことはありませんでしたが、現在はそれを改造するのに少し遅れています...しかし、おそらく次のアプリに使用します。 – Smikey