2011-05-01 6 views
4

을 가지고 직후 presentModalViewController 호출 나는 코드는 dismissModalViewControllerAnimated 문제

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match 
{ 
    [menuViewController dismissModalViewControllerAnimated:YES]; 
    [GameKitWrapper getSingleton].match = match; 
    match.delegate = [GameKitWrapper getSingleton].remotePlayer; 
    [menuViewController presentModalViewController:avatarSelectionViewController 
             animated:YES]; 
} 

을하지만하여이 작동 기각하는 것이 문제가 아니라 현재를 가지고있다. dismissModalViewControllerAnimated를 변경했을 때 : dismissModalViewControllerAnimated에 YES : NO는 작동했지만 좋지 않습니다.

도움을 주시면 감사하겠습니다. 두 번째 기다리고

답변

5

@ 아담은 올바른 생각을 가지고 있지만, 당신은 어떤 임의의 지연을 기다리고 싶지 않습니다. 애니메이션이 완성되는 데는 어느 정도의 시간이 걸리기 때문에 깨지기 쉽습니다. 이전 뷰 컨트롤러가 실제로 닫히기를 기다리고 싶습니다. 내 경험에 가장 적합한 장소는 현재보기 컨트롤러의 viewDidAppear:입니다. 그것은 모달이 완전히 사라진 후에 호출됩니다. 비슷한 문제를 다루는 몇 가지 예제 코드는 this question을 참조하십시오.

+0

이 답변은 정확합니다. – adam

+1

나는 viewDidAppear :를 대체 할 필요가없는 대안 (http://stackoverflow.com/a/8317603/126855)을 가지고있다. – Bill

0

봅니다 ....

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match 
{ 
    [menuViewController dismissModalViewControllerAnimated:YES]; 
    [GameKitWrapper getSingleton].match = match; 
    match.delegate = [GameKitWrapper getSingleton].remotePlayer; 
    [self performSelector:@selector(presentModal) withObject:nil afterDelay:1.0]; 
} 

- (void)presentModal { 
    [menuViewController presentModalViewController:avatarSelectionViewController 
              animated:YES]; 
} 
+1

SDK를 사용하고있었습니다). 그리고 필자는 종종 다음 viewcontroller를 표시하는 것을 지연시키는 것을 보장하지 않는다는 것을 종종 발견했습니다. 이 때문에, 나는 단순히이 디자인을 완전히 피한다. –

+0

시간의 대기는 허약합니다. 너무 길면 앱이 불필요하게 반응하지 않을 것입니다. 너무 짧으면 현재 통화가 실패합니다. 여기에 타이밍에 의존하지 않는 솔루션을 발견 : http://stackoverflow.com/a/8317603/126855 – Bill

-1

시도 통화 :

[menuViewController dismissModalViewControllerAnimated:NO]; 

호출하기 전에 : 나중에 .. 적어도 이전에 (실제의 UI 문제, 심지어 충돌을 일으킬 수 있습니다 해고와 같은 runloop에 UIView의 컨트롤러를 제시

[menuViewController presentModalViewController:avatarSelectionViewController 
        animated:YES]; 
+0

-1 Asker가 이미이 작업을 시도했지만보기 컨트롤러를 없애는 애니메이션이 부족하다는 것에 반대하여 사라지는 것을 원치 않았습니다. – zachjs