0

メイン ビュー コントローラー、「背景色の変更」ビュー コントローラー、および詳細ビュー コントローラーがあります。

ユーザーが背景色の変更ビューコントローラーを介して背景色を変更すると、次のようになります。

 NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:currentColor];
 [[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"backgroundColor"];
 //currentColor is specified by user

これは、次の方法で他のビュー コントローラーに更新されます。

NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
self.view.backgroundColor = color;

私が抱えている問題は、メイン ビュー コントローラーが FIRST をロードすることです。現在、アプリが初めて読み込まれると、すべてが白い画面になります。私の質問は、アプリケーションがすべてのView Controllerで最初に緑色でロードされ、ユーザーが色を指定した後、緑色の表示を停止し、指定された色の表示を開始するように変更するにはどうすればよいですか?

これを試してみましたが、設定viewDidLoadを上書きするだけなのでうまくいきません。NSUserDefaults

4

2 に答える 2

3

-[NSUserDefaults registerDefaults:]あなたがここで欲しいものです。「デフォルト」にしたい値でそれを呼び出すと、他の呼び出し元がそれらの値を取得します。ここを参照してください。 これは、アプリのライフサイクルの早い段階で実行する必要があります。– application:didFinishLaunchingWithOptions:

于 2013-08-03T21:04:41.370 に答える
1

ユーザーが色選択ビューで色を選択するまで毎回背景を緑に設定する意図については、アプリがフォアグラウンドに読み込まれるたびに、またはアプリが起動されるたびにこれを行いますか? IBファイルで設定するだけで(IBを使用している場合)、またはviewDidLoad動作するはずです。

あなたが正しくやろうとしていることを理解している場合は、別のアイテムを作成して、ユーザーがいつ色を選択したかを追跡できます。選択した色に背景を設定する前にNSUserDefaults、このフラグをチェックするだけです。viewDidLoadただし、いつこれを行いたいかを尋ねた理由は、そのフラグをいつリセットするかを知るためです。

于 2013-08-03T21:16:59.217 に答える