2014-04-01 84 views
1

我想創建一個自定義動畫流行到根視圖控制器。我想創建一個動畫,其中當前用戶滑下並揭示下面的新視圖控制器,以及我將添加的其他一些內容。我的大問題是,我無法弄清楚如何將自定義動畫添加到popToRootViewController。我已經創建了一個自定義動畫presentViewController,但不知道如何做與popToRootViewController相同的事情。任何幫助都會很棒,順便說一句,我不需要幫助控制器滑動,我只需要幫助控制器顯示任何動畫。下面是我創建了一個自定義動畫呈現一個視圖控制器:添加自定義動畫popToRootViewController

FeedViewController *feed = [[FeedViewController alloc] init]; 
feed.transitioningDelegate = self; 
feed.modalPresentationStyle = UIModalPresentationCustom; 
[self presentViewController:feed animated:YES completion:nil]; 

回答

1

您必須實現UINavigationControllerDelegate協議方法:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController 
            animationControllerForOperation:(UINavigationControllerOperation)operation 
               fromViewController:(UIViewController *)fromVC 
               toViewController:(UIViewController *)toVC 

在這一點上,你應該能夠在你的transitioningDelegate堵塞(return!)

如果您不想使用自定義控制器,則可以返回nil。例如,你可以使用

{ 
    if(operation==UINavigationControllerOperationPop) 
    { 
     return MYTRANSITIONINGDELEGATE; 
    } 
} 

確保您設置navigationController的委託;)

+0

我會設置委託像'self.navigationController.transitioningDelegate =自我;'或'一樣self.navigationController.delegate' – matthew

+0

忘記我以前的問題,我唯一想知道的是如何爲不同的視圖控制器提供不同的動畫,所以我只會返回MYTRANSITION,如果推送FeedViewController – matthew

+0

您可以檢查toVC/fromVC,並選擇相應的transitioningdelegate!請確保在'POP'轉換中fromVC是'較新'的viewController(它們是從push到pop交換的) –