2012-01-26 28 views
1

Foursquareのようなアプリケーションで、[ホーム]ボタンをクリックするとアプリケーションがバックグラウンドに移動します。次に、アイコンをクリックすると、コンテンツが画面に読み込まれます。アプリケーションがバックグラウンドから呼び出されたときにメソッドを呼び出す

アプリをバックグラウンドで送信した後、それを呼び出したときに、コンテンツが画面に読み込まれません。 viewDidAppearメソッドでコードを入力しましたが、実行されません。

アクティブになったアプリケーションコンテンツをどのように読み込むことができますか?

+0

ドキュメントを読みます:http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4- SW3 – dasdom

答えて

5

- (void)applicationDidBecomeActive:(UIApplication *)applicationまたは- (void)applicationWillEnterForeground:(UIApplication *)applicationまたは同等のUIApplication通知に応答する必要があります。 viewDidAppearのようなUIViewControllerライフサイクルコールは、アプリのライフサイクルの移行によってトリガーされません。

+0

これは私のAppDelegateに既にあります。だから、そこにコードを追加するだけでうまくいった。ありがとう。 –

3

smparkesの提案が正しいです。 UIApplicationDidBecomeActiveNotificationまたはUIApplicationWillEnterForegroundNotificationに登録できます。これらの通知は、それらのメソッド(smparkesが書いたもの)が呼び出された後に呼び出されます。この通知のハンドラでは、あなたが望むことをします。たとえばviewDidLoadであなたのコントローラ用の次の通知を登録します。

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

deallocに削除することを忘れないでください:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

最後に、doUpdate方法は、以下の

-(void)doUpdate:(NSNotification*)note 
{ 
    // do your stuff here... 
} 

I可能性がありUIApplicationDelegate class referenceとお伝えください。特にを参照してください。アプリケーション状態の変化を監視する

希望します。

+0

私はARCを使用していますので、まだdeallocする必要がありますか?なぜ ? – sharon

+0

する必要があります。詳細については、この[stackoverflowトピック](http://stackoverflow.com/questions/8372841/removing-a-nsnotificationcenter-observer-in-ios-5-arc)をお読みください。この他の[stackoverflowトピック](http://stackoverflow.com/questions/6469209/objective-c-where-to-remove-observer-for-nsnotification)ではなく、なぜそれを削除する必要がありますか説明。それが役に立てば幸い。 –

0

あなたがUIApplicationDidBecomeActiveNotificationを聴きたいと仮定した場合、ここではあなたを助けるかもしれないObjCコードがあります。

[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification 
object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { 

    // custom code goes here. 
}]; 
関連する問題