1. ホーム
  2. ios

[解決済み] バックグラウンドからアプリを開くとViewDidAppearが呼ばれない

2022-04-21 11:44:43

質問

値が0(ラベル)のView Controllerがあり、そのView Controllerを別の場所から開くと ViewController を設定しました。 viewDidAppear で、ラベルに値20を設定します。 これは問題なく動作しますが、アプリを閉じてからもう一度アプリを開くと、値が変更されないのです。 viewDidLoad , viewDidAppearviewWillAppear は何も呼び出されません。 アプリを開いたときに呼び出すにはどうしたらいいのでしょうか? から何かしなければならないのでしょうか? applicationDidBecomeActive ?

解決方法は?

正確なイベントのシーケンスに興味があり、以下のようにアプリをインストルメント化しました。 (@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