在我點擊主頁按鈕後Foursquare等應用程序轉到後臺。然後當我點擊它的圖標時,它會在屏幕上加載內容。當從後臺調用應用程序時調用方法
當我將應用程序發送到背景,然後回想它時,它不會將內容加載回屏幕。我在viewDidAppear
方法中輸入了我的代碼,但未執行。
如何在應用程序內容變爲活動狀態時加載它?
在我點擊主頁按鈕後Foursquare等應用程序轉到後臺。然後當我點擊它的圖標時,它會在屏幕上加載內容。當從後臺調用應用程序時調用方法
當我將應用程序發送到背景,然後回想它時,它不會將內容加載回屏幕。我在viewDidAppear
方法中輸入了我的代碼,但未執行。
如何在應用程序內容變爲活動狀態時加載它?
您需要回復- (void)applicationDidBecomeActive:(UIApplication *)application
或- (void)applicationWillEnterForeground:(UIApplication *)application
或等效的UIApplication
通知。 UIViewController
生命週期調用如viewDidAppear
不會被應用程序生命週期轉換觸發。
這已經在我的AppDelegate中。所以只需添加代碼即可。謝謝。 –
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...
}
我建議您閱讀UIApplicationDelegate class reference。特別閱讀關於監控應用程序狀態更改。
希望它有幫助。
我正在使用ARC,所以我仍然需要釋放它?爲什麼? – sharon
你應該。更多的信息請閱讀[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),而不是解釋爲什麼你應該刪除它。希望能幫助到你。 –
假設您要收聽UIApplicationDidBecomeActiveNotification,這裏是可能對您有幫助的ObjC代碼。
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
// custom code goes here.
}];
閱讀文檔:http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4- SW3 – dasdom