2014-06-11 8 views
1

사용자가 배경을 입력 할 때 게임 일시 중지 (타이머 값 및 점수와 같은 게임의 현재 상태 저장 중)를 시도하고 있습니다. 나는배경 입력시 게임 일시 중지

- (void)applicationDidEnterBackground:(UIApplication *)application 방법이 구현해야 알지하지만 난 방법을 모르겠어요. 나는 현재 사용자가 현재있는 현재 뷰 컨트롤러가 게임 장면인지 확인한 다음 일시 중지 할 방법을 호출해야한다고 생각합니다. 나는 올바른 생각을 갖고 있는가? 현재보기 컨트롤러에 액세스하는 방법을 모르겠습니다. 누구든지 약간의 빛을 비추 수 있습니까?

+0

나는 'UIKit'을 사용하지 않았습니다. 아주 단순한 게임이기 때문에 특별하지 않습니다. – chanpkr

+0

그 방법을 보여줄 수 있습니까? 나는 그것을 몇 시간 동안 알아 내려고 애썼다. – chanpkr

+0

그러나 일시 중지 메서드가 다른보기 컨트롤러에 있으면 어떻게됩니까? 해당 뷰 컨트롤러에 어떻게 접근합니까? – chanpkr

답변

2

서브 클래스 UINavigationController가 내부의 통지를 처리하고보기를 추가 컨트롤러는 UIApplicationDidEnterBackgroundNotification에 대한 옵저버로 사용됩니다.

@interface GameViewController : UIViewController 
@end 

@implementation GameViewController 
- (void) init { 
    self = [super init]; 
    if (self) { 
     [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(saveGameState) name: UIApplicationDidEnterBackgroundNotification object: nil]; 
    } 
} 

- (void) delloc { 
    [[NSNotificationCenter defaultCenter] removeObserver: self name: UIApplicationDidEnterBackgroundNotification object: nil]; 
} 

- (void) saveGameState { 
//do the things you neeed to do 
} 
@end 
2

게임보기 컨트롤러가 응용 프로그램이 백그라운드로 들어간다는 것을 알기 위해 문제가 있습니까?

게임 뷰 컨트롤러가 표시되면, UIApplicationDidEnterBackgroundNotification 알림

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myBackgroundHanlerMethod:) name: UIApplicationDidEnterBackgroundNotification object:nil]; 

을 수신하도록 등록하려면 알림 센터를 사용하고

- (void)myBackgroundHanlerMethod:(NSNotification *)notification; 
+0

참고 1 : UIApplicationDidEnterBackgroundNotification을 보낼 필요가 없습니다. 응용 프로그램에서 보내드립니다 (UIApplication 설명서 참조). –

+0

참고 2 : gameviewcontroller가 더 이상 표시되지 않으면 알림을 중지해야합니다. viewWillAppear 내부에 등록하고 예를 들어 viewWillDisappear 내부에서 등록을 취소합니다. –

+0

추측 NSNotification 클래스를 사용하는 방법을 먼저 배워야합니다. 감사! – chanpkr

관련 문제