バックグラウンドからアプリを開いたときに ViewDidAppear が呼び出されない 質問する

バックグラウンドからアプリを開いたときに ViewDidAppear が呼び出されない 質問する

値が 0 (ラベル) である View Controller があり、別の View Controller からその View Controller を開くときに、ラベルに値 20 を設定するようにViewController設定していますviewDidAppear。正常に動作しますが、アプリを閉じて再度アプリを開いても、 のため値は変更されずviewDidLoad、何も呼び出されません。アプリを開いたときに を呼び出すにはどうすればよいですviewDidAppearviewWillAppear。 から何かを行う必要がありますかapplicationDidBecomeActive?

ベストアンサー1

イベントの正確な順序が気になったので、次のようにアプリをインストルメント化しました: (@Zohaib、質問への回答には、以下の NSNotificationCenter コードを使用できます)。

// AppDelegate.m

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"app will enter foreground");
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"app did become active");
}

// ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"view did load");

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}

- (void)appDidBecomeActive:(NSNotification *)notification {
    NSLog(@"did become active notification");
}

- (void)appWillEnterForeground:(NSNotification *)notification {
    NSLog(@"will enter foreground notification");
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"view will appear");
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"view did appear");
}

起動時の出力は次のようになります。

2013-04-07 09:31:06.505 myapp[15459:11303] view did load
2013-04-07 09:31:06.507 myapp[15459:11303] view will appear
2013-04-07 09:31:06.511 myapp[15459:11303] app did become active
2013-04-07 09:31:06.512 myapp[15459:11303] did become active notification
2013-04-07 09:31:06.517 myapp[15459:11303] view did appear

背景に入り、次に前景に戻ります。

2013-04-07 09:32:05.923 myapp[15459:11303] app will enter foreground
2013-04-07 09:32:05.924 myapp[15459:11303] will enter foreground notification
2013-04-07 09:32:05.925 myapp[15459:11303] app did become active
2013-04-07 09:32:05.926 myapp[15459:11303] did become active notification

おすすめ記事