2012-09-12 22 views
0

跟进this one跳回几个步骤在导航树自定义动画

问题说我的应用程序有几个ViewControllers,让我们称他们为A,B,C,d。通常从d移动退一万步,即 - > C,将使用与线在NavigationBar或通过代码返回按钮

[self.navigationController popViewControllerAnimated:YES]; 

我想要做的就是从d打算后退了好几步,像什么 - > B.这将与

[self.navigationController popToViewController:B animated:YES]; 

不幸的是,这种方式我不能决定使用哪个动画。而不是默认的动画,我不得不使用翻转动画。

做到这一点,我发现这个方法

[self.navigationController transitionFromViewController:self.navigationController.presentedViewController toViewController:B duration:300 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:nil]; 

这是实现这一目标或任何人都可以提出一个更好的办法来做到这一点的唯一途径,唯一的方法?

回答

0

机智的动画代码h参考您的评论....

“听起来是正确的,但我会在哪里定义它应该是翻转动画?据我所见,这仍然使用默认动画。 - taymless“

您需要执行动画意味着你使用的代码块....

-(void)animatefromView:(UIView*)fromView toBlock:(void (^)(void))block // note block may be any executable code... 
    { 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration: 1]; 
     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:fromView cache:NO]; 
     block(); 
     [UIView commitAnimations]; 

    } 

和方法调用将....

[self animatefromView:self.navigationController.view toBlock:^{ 
     [self.navigationController pushViewController:ani animated:NO]; 
                    }]; 

我希望这将帮助你...

1

您可以删除从导航堆栈中C查看控制器,所以当它从d弹出,它会直接进入视图B

// Remove Controller C from Stack 
NSMutableArray *controllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]]; 
[controllers removeObject:C]; 
[self.navigationController setViewControllers:controllers]; 

然后你可以使用[self.navigationController popViewControllerAnimated:YES];你想要的动画,它会弹出回到视图B之前

弹出视图控制器时要进行实际的翻转动画,您可以使用下面

​​
+0

听起来是正确的,但我会在哪里定义它应该是一个翻转动画?据我所见,这仍然使用默认动画 – taymless

+0

修改我的答案 –