2013-10-21 1 views
0

내 앱 A-> B-> C (A & B에는 SKScene이 포함 된 SKScene이 있음)에 세 개의 VC가 있습니다.UINavigationController popViewController 버그

A (한 버튼 누름) -> B (한 번 재생, 완료) -> C (게임 센터에서 몇 개의 버튼과 UILabels 정보로드) C -> A (popToRootViewController)에서 팝하면 모든 것이 잘 작동합니다 (메모리 누수가 한 번 발생했지만 생각합니다).

C-> B에서 popViewController를 수행하는 버튼을 누르면 문제가 발생합니다.

처음으로 작동하고 B가 다시로드되며 C에 이르면 두 번째로 UIView 애니메이션이 작동하지 않습니다. 또한 내가 NSLog self.navigationController.viewControllers 일 때 (C가 팝업 된 후 B-> C에서 전환 할 때) 2 개의 C View Controller가 있다는 것을 보여줍니다. C가 두 번 생성되었습니다 (C-> B에서 갈 때 삭제 된 다음 두 번 생성됨).

이때 고려 : B는 (C 호출 popViewController 후) 번째로드

AViewController: 0x17683d80,

BViewController: 0x1c956720

을하고

"AViewController: 0x17683d80",
"BViewController: 0x1c956720",
"CViewController: 0x1ca49e40",
"CViewController: 0x1ca4c6c0"

C를 두 번째로로드 한 후 NSLog를 수행 할 때. 또한 C -> B에서 두 번째로 이동하려고 시도하면 앱이 중단됩니다 (때로는 검은 색보기로 표시되며 충돌하는 경우도 있음).

현재 무슨 일입니까? 감사합니다.

답변

0

코드를 보지 않고 알기 힘들지만 모달보기 컨트롤러가 느리게 해제되는 문제가 있었지만이 방법으로 내 장면을 설정하면 문제가 해결되었습니다.

@implementation ViewController { 
    SKView *_skView; 
} 

- (void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 

    if (!_skView) { 

     _skView = [[SKView alloc] initWithFrame:self.view.bounds]; 
     _skView.showsFPS = YES; 
     _skView.showsNodeCount = YES; 
     SKScene * scene = [MyScene sceneWithSize:_skView.bounds.size]; 
     scene.scaleMode = SKSceneScaleModeAspectFill; 
     [_skView presentScene:scene]; 
     [self.view addSubview:_skView]; 
    } 
} 

viewDidLayoutSubviews는 가로로 표시되기 때문에 가로로 세로로 표시하면 원래 설정대로 유지됩니다. 가장 중요한 것은 _skView iVar를 사용하는 것입니다.

+0

문제는 부끄러워하지 않습니다. 문제는 해제되지 않습니다 (터지지 않음!) –

+0

그래서 위는 내가 추측하는 데 도움이되지 못했습니다. – DogCoffee

+0

C에서 B로 skView로 갈 때, 위와 같은 iVar를 사용하여 만들지 않으면 로그에 기록한대로 새 인스턴스가 생성됩니다. iVar로 설정해야 문제가 생깁니다. – DogCoffee

관련 문제