2013-08-16 18 views
0

我有一個自定義UIViewController模式顯示。我叫它mainMenudismissViewControllerAnimated:完成:發生即時除非我kludge它

它有它自己的可愛的小過渡動畫,它可以使其視圖從屏幕上滑落。當我想解僱它時,我想調用自定義動畫,然後在完成後實際解除它。這似乎應該工作:

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

但是,這使得視圖控制器瞬間消失之前,我看到自定義幻燈片的東西。

使視圖控制器等待,直到菜單消失之前消失的正確方法是什麼?

我試過一堆東西。我只找到一個途徑,使其工作:

- (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方法。 –

相關問題