2011-01-09 13 views
0

私が書いているiPadプログラムでは、ユーザーがスコアボードにアクセスする方法としてモーダルビューを使用しています。スコアは手動で保持されます。スコアボードビューにはスコアを上げるボタンとスコアを下げるボタンがあり、UILabelを更新して更新されたスコアを表示します。スコアボードを閉じるための3番目のボタンがあり、モーダルビューは閉じられます。グローバル変数またはシングルトンを使用するスコアボード

ゲームのプレイ中に、スコアボードにアクセスしてスコアを更新します。その後、スコアボードを閉じてゲームプレイを続行します。ゲームプレイは、UINavigationControllerを使用して複数のビューにアクセスすることから構成されます。後でスコアボードにアクセスすると、スコアは0にリセットされます。

スコアボードにアクセスすると、ユーザーが設定したスコアが保持されます。

私は、グローバル変数、シングルトン、その他のいくつかの方法に関する研究を行っています。これがどのように行われるべきかについて多くの議論があるようです。スコアボードにはいくつかの異なるビューからアクセスするので、スコア変数をどのように格納するかはわかりません。

私は何か提案をいただければ幸いです。

答えて

0

個人的には、カプセル化が破られ、シングルトンを使用する必要がない場合がある(ほとんどの場合、これを回避する方が良いと思う)という理由でグローバル変数を使用しないことをお勧めします。

UINavigationControllerをサブクラス化し、サブクラス内のスコアボードビューのインスタンス変数を持つことが、あなたの説明からわかるでしょう。スコアボードビューは、ナビゲーションコントローラによって制御されているビューから常にアクセスされているようです。いずれのビューコントローラがスコアボードビューを呼び出すとしても、ナビゲーションコントローラオブジェクトを取得し、そのスコアボードオブジェクト(現在のスコアを持つ)をモーダルビューとして使用できます。

スコアを表示しているUILabelがスコアボードビューの一部であるか、別のビューに属しているかどうかはわかりません。別のビューに属している場合は、UILabelからスコアを取得して更新することもできます。

スコアを維持する必要がある場合は、ユーザーNSUserDefaultsがスコアを保存することができます。

これが役に立ちます。

+0

ありがとうNSUserDefaultsは正常に機能しました! – JulianF

関連する問題