我使用以下代码启动名为secondViewController的视图控制器。
[self.navigationController pushViewController:secondViewController animated:YES];
代码成功导致secondVC从右向左滑入
用户完成后,我希望用户能够返回第一个View Controller。为此,我已经将后退按钮连接到使用类似代码的方法,但是在这种情况下,我希望它从左向右滑动,即相反的方向。然而,毫不奇怪,返回VC也是从右到左。
[self.navigationController pushViewController:returnViewController animated:YES];
有没有办法扭转方向,以便在第二种情况下,它从左向右滑动?
修改
使用Brendan建议的答案中的代码,我添加了以下方法来覆盖pushViewController。我以同样的方式调用它,但不得不注意swapButtonsForViewController,因为选择器SwapButtons无法识别。不确定它到底是做什么的。
此外,如果你把它称为超级,我会收到一个错误:这个VC的超级VC中没有可见的@接口。不知道如何解决这个问题。如果我将super改为self,则错误消失但仍然从右向左。
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
UIView *theWindow = self.view ;
if( animated ) {
CATransition *animation = [CATransition animation];
[animation setDuration:0.45f];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@""];
}
//make sure we pass the super "animated:NO" or we will get both our
//animation and the super's animation
[super pushViewController:viewController animated:NO];
// [self swapButtonsForViewController:viewController];
}
答案 0 :(得分:0)
哎呀,除了我的评论之外还有一些事情:
你是否从UINavigationController
继承了?如果你还没有这样做,这将有所帮助。
此外,遗憾的是,我与您分享的链接将替换这两种情况的方向。我应该更仔细地阅读这个问题,道歉。
虽然好消息!试试这两个:
https://stackoverflow.com/a/16535931/5806860
https://stackoverflow.com/a/16384808/5806860
这些是类似的解决方案,但有一些可能会解决您问题的小改动。