2013-08-16 3 views
0

모달로 표시되는 사용자 정의 UIViewController가 있습니다. 나는 그것을 mainMenu라고 부른다.dismissViewControllerAnimated : 완료 : 내가 그것을 kludge 않는 한 즉각적으로 발생합니다.

보기가 화면 밖으로 벗어나게하는 자체의 귀여운 전환 애니메이션이 있습니다. 내가 해고하고 싶을 때, 나는 커스텀 애니메이션을 호출하고, 일단 완료되면 실제로 그것을 닫고 싶다. 이 작업을해야 것 같습니다 :

- (void) dismissCustomViewController { 
    [mainMenu slideMenuPanelsAway]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

그러나,이 내가 정의 slidey 물건을보기 위해 도착하기 전에 뷰 컨트롤러가 즉시 사라질 수 있습니다.

사라질 때까지보기 컨트롤러가 대기 상태가 될 때까지 올바른 방법은 무엇입니까?

나는 많은 것들을 시도했다. 나는 단지 그것을 작동하게하는 한 가지 방법을 발견 :

- (void) dismissCustomViewController { 
    [mainMenu slideMenuPanelsAway]; 
    [self performSelector:@selector(dismissController) withObject:nil 
     afterDelay: 2.0f]; 
} 

(. 난 그냥 사용하기 선택 쉽게하기 위해 dismissController라는 사용자 정의 방법을 썼다을, 그것은 기본적으로 그냥 [self dismissViewControllerAnimated:YES completion:nil];를 호출)

을 그냥 끔찍한 kludgey 보인다 실제로 애니메이션 완료시 수동 지연 설정을 사용하는 대신 더 좋은 방법이있을거야, 그렇지?

+0

애니메이션 코드는 어디에 있습니까? 애니메이션이 끝나면 무언가를하고 싶다면 거기에 넣어야합니다. –

+0

나는 이것이 사실 인 경우도 있지만 이것은 사실로 보일 수 없다고 생각합니다. 사실, 내가 애니메이션을 진행하는 방법의 끝에서 해고를한다면, 나는 똑같은 문제를 겪는다 : 해고는 즉시 일어나고 애니메이션은 절대로 보지 못한다. 나는 이것을 "여러 가지"중 하나로 시도했다. –

답변

3

animateWithDuration : animations : completion :을 사용하고 애니메이션 블록에서 "미끄러운 소재"를 수행하고 완료 블록에서 해고를 수행합니다.

[UIView animateWithDuration:.5 animations:^{ 
     //Your custom animation stuff here 

    } completion:^(BOOL finished) { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    }]; 
+0

애니메이션이 실제 UIView 애니메이션 인 경우에만 작동합니까? 그들이 아니기 때문에. –

+1

@LeMotJuiced, 어떤 종류의 애니메이션입니까? 너는 의견을 미뤘다고했다. – rdelmar

+0

UIView 애니메이션을 사용하지 않는 슬라이딩 뷰입니다. 그들은 NDA 방법을 사용합니다. –

관련 문제