2012-02-20 10 views
0

初めてアプリケーションを使用している場合は、ヘルプウィザードを使用してユーザーを連れていきたいと考えています。私の計画は、特定のキーのユーザーデフォルトを検索することでした。私の質問は、iPhoneアプリケーションで初期ビューを再ルーティングする最善の方法は何ですか?それは、アプリケーションデリゲートで起こるか? 最初のView Controllerでリルートを取得する必要がありますか?私は最初のビューのナビゲーションコントローラでsetRootViewを呼び出す必要がありますか?それはストーリーボードで行われますか?目的C初回使用時にルートビューを変更する

私は非常に混乱しており、そうする良い方法があるのでしょうか?

私はアプリがあらかじめ設定されている場合、IOS 5

本当にありがとうございました、 ロスが

答えて

2

最初の起動時に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

+0

おかげで、これは私がオプションが利用可能になったときに、これはあなたの問題を解決した場合、答えとしてこれをマークすることができますうれしい –

+0

素晴らしかった:) – MobileOverlord

0

は私が管理する環境設定を使用して使用します(デフォルトはもちろん、「NO」である)、および存在する場合ではありませんユーザーに設定を案内する全画面モーダルダイアログ。

[tabBarController presentModalViewController:configurationController animated:YES]; 

これは、アプリデリゲートから主に行われますが、ユーザーはなど、初期の設定プロセスを中止し、そしてそれは非常にうまく動作するかどうか他の場所で呼び出すことができます。

関連する問題