最初の起動時にuserdefaultsキーを使用する場合は、AppDelegateのinitialize関数をオーバーライドすることをお勧めします。これにより、ユーザーのデフォルトキーが正しい値に初期化されるようになります。たとえば、私のアプリケーションの1つでは、ユーザーにウェルカムビューコントローラを表示することができないため、最初の起動かどうかを確認しています。私はAppDelegate.mファイルで次の関数を使ってこれを設定します。
+ (void)initialize
{
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"showWelcome"]) {
NSString *mainBundlePath = [[NSBundle mainBundle] bundlePath];
NSString *settingsPropertyListPath = [mainBundlePath
stringByAppendingPathComponent:@"Settings.bundle/Root.plist"];
NSDictionary *settingsPropertyList = [NSDictionary
dictionaryWithContentsOfFile:settingsPropertyListPath];
NSMutableArray *preferenceArray = [settingsPropertyList objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *registerableDictionary = [NSMutableDictionary dictionary];
for (int i = 0; i < [preferenceArray count]; i++) {
NSString *key = [[preferenceArray objectAtIndex:i] objectForKey:@"Key"];
if (key) {
id value = [[preferenceArray objectAtIndex:i] objectForKey:@"DefaultValue"];
[registerableDictionary setObject:value forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:registerableDictionary];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
– application:didFinishLaunchingWithOptions:
では、ルートコントローラとしてビューコントローラを追加します。私はいつもどんな種類の起動ビューの切り替えを行うためにもソリッド "ルートビューコントローラ"を含むのが好きです。 UIWindowサブビューレベルでそれを行うことは問題になります。 RootViewControllerの– viewDidLoad
では、キーのユーザーデフォルトをチェックします。
if ([[NSUserDefaults standardUserDefaults]valueForKey:@"showWelcome"] == [NSNumber numberWithBool:YES]) {
[self pushViewController:[[WelcomeViewController alloc]init] animated:NO];
} else {
[self pushViewController:[[OtherViewController alloc]init] animated:NO];
}
このすべては、彼らがしたい場合、ユーザは再びWelcomeControllerを見ることができますsettings.bundleでブールYES/NOスイッチに戻って接続されています。
![SettingsBundle](https://i.stack.imgur.com/QlNNc.png)
おかげで、これは私がオプションが利用可能になったときに、これはあなたの問題を解決した場合、答えとしてこれをマークすることができますうれしい –
素晴らしかった:) – MobileOverlord