2012-11-16 2 views
0

게임에 약간의 문제가 있습니다. 중단 될 때마다 게임을 중단하고 싶습니다.Storyboards -iOS를 사용하여 시작한 후 앱 대표가 작동하지 않습니다.

applicationWillResignActive에서 xib 파일을 사용했을 때 내 stopGame 메서드를 호출했을 때 작동했습니다. 스토리 보드로 변경했을 때 작동이 멈췄습니다. applicationWillResignActive은 스토리 보드에서 계속 작동하지만 내 이유가 무엇인지 모르겠지만 제 게임이 멈추지 않습니다 ..

누군가 이런 문제에 직면 했습니까? 그리고 가능한 해결하시기 바랍니다 .. 미리 감사합니다 ..

일부 코드

앱 위임 :

- (BOOL) application: (UIApplication *) application 
didFinishLaunchingWithOptions: (NSDictionary *) launchOptions 
{  
     mainViewController = [[MainViewController alloc] init]; 

     [self.window addSubview: mainViewController.view]; 
     [self.window makeKeyAndVisible]; 

     return YES; 
} 


- (void) applicationWillResignActive: (UIApplication *) application 
{  
    [mainViewController stopGame]; 
} 

MainViewController

- (IBAction) stopGame 
{ 
     self.gameRunning = NO; 
     [currentLevel deactivate]; 
} 

LEVEL_1

- (void) deactivate 
{ 
     [levelTimer invalidate]; 
     levelTimer = nil; 
} 
+0

. 예를 들어,이 OpenGL입니까? 프레임 워크를 사용하고 있습니까? UIKit보기 컨트롤러가 있습니까? 우리는 당신을 도울 더 많은 정보가 필요합니다 ... – HackyStack

+0

나는 몇 가지 코드를 추가했습니다 .. 아니 OpenGL. ViewController를 사용한 UIKit입니다. 어떤 종류의 정보가 필요합니까? 고마워 .. – user123

+0

'currentLevel'은 non-nil입니까? 당신은'[currentLevel deactivate]'를 밟았습니까? 그것은 무엇을합니까? (그리고'stopGame'이 불려지는데 왜 애플 리케이션 위임 문제라고 생각합니까?) –

답변

0

storyboard를 사용하는 경우 응용 프로그램의 기본 기본 진입 점은 초기 viewController (스토리 보드의 왼쪽 여백에서 오는 화살표가있는 스토리 보드)에서 시작하는 스토리 보드입니다. 앱이 시작되면 초기 viewcontroller가 아카이브되지 않고 초기화되고 뷰가 주 창에 추가됩니다. 그래서 applicationDidFinishLaunching에있는 코드는 다른 VC를 할당합니다.이 코드는 앱에서로드 한 코드가 아닙니다. 이러한 이유로 stopGame 메시지를 잘못된 VC로 보냈습니다. 아래 applicationDidFinishLaunching 및 applicationWillResignActive에서 mainViewController를 참조하는 모든 코드를 삭제 다음 applicationWillResignActive에 추가 : 당신은 몇 가지 관련 코드를 게시해야 할거야

[(MainViewController *)self.window.rootViewController stopGame]; 
+0

네 .. MainViewController가 rootviewController 인 경우 잘 작동합니다. 그러나 my rootViewController UINavigationController .. 'uncaught 예외로 인해 응용 프로그램 종료 중'NSInvalidArgumentException '이유 :'- [UINavigationController stopGame] : 인스턴스 0x967c8b0로 전송 된 인식 할 수없는 선택기 "어떻게 해결할 수 있을까 ?? – user123

+0

[(MainViewController *) [(UINavigationController *) self.window.rootViewController visibleViewController] stopGame]; – LombaX

+0

또는 visible viewController 대신 topViewController를 사용해야합니다. 보이는 뷰 컨트롤러가 다른 경우 (게임 중에 변경된 경우) – LombaX