2014-10-20 69 views
1

我有一個基於導航的應用程序,我推幾個viewControllers(一般從右到左)創建一個事件。當用戶到達最後一個屏幕並創建事件時,我會調用...如何更改popToRootViewController的轉換樣式?

[self.navigationController popToRootViewControllerAnimated:YES]; 

...返回到第一個屏幕。這工作正常,但過渡動畫只是一個簡單的從左到右。

是否有一種方法可以將過渡樣式更改爲僅從popToRootViewController左至右的其他方式?我希望它看起來不同於回到上一個屏幕。

回答

1

希望它有幫助!

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];

CATransition *transition = [CATransition animation];

[self.navigationController.view.layer addAnimation:transition forKey:@"someAnimation"];

[self.navigationController popViewControllerAnimated:YES];
[CATransaction commit];

0

假設我們正在談論的iOS 7+,你將需要實現您的導航控制器中的協議。從那裏開始,使用 navigationController:animationControllerForOperation:fromViewController:toViewController:提供一個UIViewControllerAnimatedTransitioning符合對象,該對象將執行您的自定義動畫。您可以查看UINavigationControllerDelegate文檔瞭解更多信息。

0

我猜的,而不是調用popToRootViewController,你可以做你自己的方法(通過繼承UINavigationController,或做任何你想要的類別或)

,做這樣的事情(這取決於你在哪裏將代碼會有所不同實施它,但這裏是想法):

UIViewController *rootVC = self.navigationController.topViewController; 
[UIView animateWithDuration:1 animations:^{ 
    // Have fun doing what you want with the rootview 
    [self.view addSubview:rootVC.view]; 
} completion:^(BOOL finished) { 
    [self.navigationController popToRootViewControllerAnimated:NO]; 
}];