2012-01-26 1 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 topic] (http://stackoverflow.com/questions/8372841/removing-a-nsnotificationcenter-observer-in-ios-5-arc)을 읽으십시오. 이 다른 [stackoverflow topic] (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. 
}];