2012-01-26 137 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通知。 UIViewController生命週期調用如viewDidAppear不會被應用程序生命週期轉換觸發。

+0

這已經在我的AppDelegate中。所以只需添加代碼即可。謝謝。 –

3

smparkes建議是正確的。您可以註冊UIApplicationDidBecomeActiveNotificationUIApplicationWillEnterForegroundNotification。這些通知是在這些方法(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... 
} 

我建議您閱讀UIApplicationDelegate class reference。特別閱讀關於監控應用程序狀態更改

希望它有幫助。

+0

我正在使用ARC,所以我仍然需要釋放它?爲什麼? – sharon

+0

你應該。更多的信息請閱讀[stackoverflow topic](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. 
}]; 
相關問題