2009-05-06 21 views
1

私は個々のUIViewControllerとxibを持つマルチビューアプリケーションを持っています。私はゲームのビューであるビューを1つ持っています。私はそれを再初期化したいときは、最初の状態で再起動し、最後に残した状態ではありません。View Controllerを再初期化する - iPhone

ここは私はビューをロードし、削除するために使用していたコードブロック:

-(void)loadStartViewController { 
[currentView.view removeFromSuperview]; 
StartViewController *startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle:nil]; 
[window addSubview:startViewController.view]; 
currentView = startViewController; 

}私はここに、より明確にする必要があり

。私はUIViewControllerとxibがゲームをプレイ中にビューを構成している。 UIViewのメソッドを呼び出して、プログラムでビューを描画します。私は、ゲームが終了し、私はスコア画面に行くUIViewControllerを残します。私は、ユーザーが再起動し、ゲームに戻ってIEの上記のコードをUIViewControllerをロードするが、新しいゲームを開始するには、すべての設定が呼び出されたメソッドにあります。私は変数を設定し、UIViewControllersの間で渡すことができますが、私は最後のゲームの最後に状態について何も覚えていないようにゲームのUIViewControllerをリセットすることができるコマンドがあるかもしれません。

私は、ゲーム画面を描画し、そのメソッドをviewDidLoadセクションのUIViewControllerから呼び出すUIViewのすべての変数をリセットするメソッドを作成しました。

答えて

2

モデル(ゲームの状態)に保存されているデータが表示されているとします。だからあなたはゲームの状態をリセットして、ビューに表示させたいと思いませんか?ビューは、電話機のメモリが不足しているときに表示または解除する必要があるときに、システムによって管理(ロード/解放/再ロード)されます。したがって、ゲームの状態を個別に処理する場合は、ゲームの状態(モデル)を更新し、ビューに表示させる必要があります。

「ビューを呼び出す」とはどういう意味ですか?あなたは「メニュー」から「ゲーム画面」に行くときを意味しますか?

ビューが表示された後にゲームの状態を再読み込みすると役立つでしょう。 viewDidLoadのようないくつかのデリゲートがありますが、私の理解は、ビューがロードされた後に呼び出されるということです。しかし、メモリが不足している場合は、ビューが解放され、後で再読み込みされる可能性があるので、モデルオブジェクト内でゲームの状態を管理し、ビューに表示させてください。

あなたが私の 'ビューを呼び出す'ことを意味しているかどうかは分かりません。

0

現在表示されているビューを追跡する代わりに、UINavigationControllerを使用します。それが彼らのためのものです。アプリのデリゲートでapplicationDidFinishLaunchingで:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:startViewController]; 

startViewControllerでインスタンス変数を作成し、それを作成した後、ナビゲーションコントローラにそれをポインタを渡します。あなたがゲームに行きたいときは:

[self.navigationController pushViewController:gameViewController animated:YES]; 

または何もアニメーションしません。あなたはまた、おそらくでナビゲーションバーを非表示にしたいと思う:

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

ゲームが終了すると、あなたが好きな景色プッシュし続けることができ、あなたは常にバック最初のビューに行くことができます:

[self.navigationController popToRootViewControllerAnimated:YES]; 

ああ、およびゲーム毎回を再初期化すると、あなたがプレイする、ただのゲームのビューコントローラで

-(void)viewWillAppear:(BOOL)animated{} 

を実装し、あなたが好きな初期化を行います。正直なところ、私はあなたが.xibでそれを使うべきか100%確信していません...私はまれにInterface Builderを使っていますので、わかりません。しかし、私はそれがうまくいくと思います。

関連する問題