6

ipadアプリの起動時にログイン画面を条件付きで表示したい。私は毎回ではなく、定期的にログインする必要があるだけなので、デフォルトのsegueの一部にしたくありません。ipadアプリケーションの起動時にモーダルビューを表示する

私の質問にはnumerousexamplesがありますが、それらはすべてios5の前にあるようです。しかし、私がストーリーボードを使うと、何も動かないようです。それを「loginScreen」 の識別子を与え、ストーリーボードに新規のViewControllerを追加*ストーリーボード を使用して、新しい単一のビューアプリケーションを作成する*その本質、 にこれを削減するために

*は、各ビューにテキストラベルを置きますそれらを視覚的に区別する。 appDelegateで *:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UIStoryboard *storyboard = [self.window.rootViewController storyboard]; 
    UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"]; 
    [self.window.rootViewController presentModalViewController:loginController animated:TRUE]; 

    return YES; 
} 

私は働くべきである、例の見てきたものから。しかし、元のrootViewControllerのビューは一貫して表示されます。しかし、エラーはありません。

誰かが(おそらく小さな)ことを指摘できますか?

答えて

2

didFinishLaunchingメソッドでは、アプリがアクティブな状態ではないことが判明しました。

これを置くための適切な場所は

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    UIStoryboard *storyboard = self.window.rootViewController.storyboard; 
    UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"]; 
    [self.window.rootViewController presentModalViewController:loginController animated:NO]; 
} 
2

@deafgreatdaneある:ソリューションはモーダルアプリケーションは(望ましいかもしれない)バックグラウンド状態であるから、アクティブになるたびに、ビューコントローラを提示します。私の場合は

(1-時刻を表示するためにこれを使用すると、画面だけを起動する)私はモーダル起動画面は一度だけ表示されますことを確認するために、そのソリューションにdispatch_onceを追加します。

- (void)applicationDidBecomeActive:(UIApplication*)application 
{ 
    static dispatch_once_t onceToken; 

    dispatch_once(&onceToken,^
       { 
        SomeLaunchViewController* launchViewController = [[SomeLaunchViewController alloc] init]; 
        [self.window.rootViewController presentViewController:launchViewController animated:NO completion:NULL]; 
       }); 
} 

このコードスニペットはARCを使用します。

関連する問題