改变iPhone中pushViewController的segue方向

时间:2016-01-24 03:26:45

标签: iphone pushviewcontroller

我使用以下代码启动名为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];


}

1 个答案:

答案 0 :(得分:0)

哎呀,除了我的评论之外还有一些事情:

你是否从UINavigationController继承了?如果你还没有这样做,这将有所帮助。

此外,遗憾的是,我与您分享的链接将替换这两种情况的方向。我应该更仔细地阅读这个问题,道歉。

虽然好消息!试试这两个:

https://stackoverflow.com/a/16535931/5806860

https://stackoverflow.com/a/16384808/5806860

这些是类似的解决方案,但有一些可能会解决您问题的小改动。