iOS故事板UINavigationController弹出视图不正确(向下滑动,而不是向右滑动)

时间:2012-09-10 13:42:07

标签: ios uinavigationcontroller segue uistoryboardsegue

我正在开发一款iOS应用的故事板。我正处于确保横向在整个应用程序中正常工作的阶段。我还有一个问题就是:如果手机是横向模式并且我从堆栈中弹出一个视图控制器,通过后退按钮,动画会通过向下滑动而不是右边的一般方法弹出。

以下是应用结构:

1 UITabBarController
2 UINavigationController
3 UITableViewController
2 UINavigationController
3 UIViewController

在第一个表(具有UITableViewController的表)上,后向动画按预期工作(向右移动),但在第二个选项卡上,动画无法正常工作。所有的推送和弹出都是通过故事板处理的,而不是代码。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

模态视图控制器具有4种基本动画样式,并且它们都不像导航控制器推送那样。所以很可能你的segue定义不正确或者它们是从代码中“呈现”的。

确保故事板segue是“推”而不是模态。您可以在Interface Builder中查看 - 转到故事板并单击segue连接线。在识别出segue名称的对象检查器中,在它下面应该说“推”而不是“模态”。如果它显示“模态”,则将其更改为“推”,动画应自行纠正。

还要在你的代码中确保使用preformSeque ...方法来显示下一个视图控制器,而不是像presentModalViewController那样做....

答案 1 :(得分:1)

我的错误!

我忘了更新所有视图控制器中的shouldAutorotateToInterfaceOrientation方法。这是原始的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

这是允许旋转到所有方向的应该是什么:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}


复杂的是视图已经转向景观,因为超级视图确实正确更新了旋转代码,但子视图没有。