2

JSON経由でサーバーからデータを取得し、ラベルに表示しています。そのメソッドをviewDidLoadに追加しました。

ユーザーがアプリを再度開いたときにデータを更新したい。現在、シミュレーターでアプリを強制終了し、アプリを再起動しても更新されません。

viewDidAppear メソッドを試しましたが、なぜか実行されません。

-(void)viewDidAppear{
        NSLog(@"Called viewDidAppear");
}

これは決して呼び出されません。アプリを最小化しようとしましたが、うまくいきませんでした。

4

4 に答える 4

2

私はこのチュートリアルに従いました - http://leejon.es/notifying-a-viewcontroller-with-uiapplicationdidbecomeactivenotification/

まず、ターゲット ビュー コントローラーの viewWillAppear メソッドで通知にアタッチします。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[NSNotificationCenter defaultCenter] addObserver: self
                                             selector: @selector( appActivated: )
                                                 name: UIApplicationDidBecomeActiveNotification
                                               object: nil];

}


- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self ];
}


- (void)appActivated:(NSNotification *)note
{
    [self update];
}
于 2013-05-19T18:53:00.097 に答える
1

アプリ デリゲートの実装には、次のメソッドがあります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

このメソッドはアプリを起動するたびに呼び出されるので、あなたのニーズに合っていると思います。ここにコードを配置すると、動作するはずです。

また、アプリの起動が遅れるため、ここで同期呼び出しを実行しないでください。

編集: このメソッドは、アプリの起動時にのみ呼び出されます。コードをメソッド内に配置し、アプリケーション didFinishLaunchingWithOptions から呼び出し、メソッドからも呼び出すことができます。

- (void)applicationWillEnterForeground:(UIApplication *)application;

このメソッドは、アプリケーションがフォアグラウンドに入ったときに呼び出されますが、最初の起動後では呼び出されないため、注意してください。

また、Apple 開発者ページから UIApplicationDelegate メソッドを確認する必要があると思います: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html また、アプリケーションの状態の変化を確認してください。 : http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

于 2013-05-17T22:13:11.743 に答える