2

私のviewWillLoad:メソッドでは、現在、これらの線に沿って何かを行っています。

- (void)viewWillAppear:(BOOL)animated {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   if ( [defaults boolForKey:@"enabled_preference"] ) {
      ...   
   } else {
      ...   
   }
   [super viewWillAppear:animated];
}

設定ペイン(通常のSettings.bundleを使用してビルド)を開く前にアプリケーションをビルドして実行すると、ブール値はデフォルトのYESではなくNO(またはおそらくnil )のように見えます。ただし、アプリケーションを開く前に設定アプリケーションを開き、アプリケーション設定ペインを確認すると、すべてが期待どおりに機能します。

アプリケーションプリファレンスが初期化されていないことを前提としているため、アプリケーションデリゲートでデフォルト値(まだ設定されていない場合)に初期化する必要があります。誰かがこれを確認できますか?それとも私はここで盲目的に明白な何かを見逃していますか?

4

2 に答える 2

4

を使用して、コードにデフォルトを指定する必要があります-registerDefaults:。これは通常+initialize、設定を使用するクラスのメソッドで実行されます。NSUserDefaultsの使用を参照してください。

于 2009-10-09T20:59:21.087 に答える
3

initializeメソッドの使用は機能しますが、バンドルからデフォルト値を読み取り、それらを使用してデフォルトを初期化するコードを含むstackoverflowでのこの他の回答が好きです。そうすれば、コードのデフォルト設定をハードコーディングする必要はありません。それらは、それらが属するplistにあります。

于 2009-10-09T22:07:09.340 に答える