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

Posted

技术标签:

【中文标题】iOS 故事板 UINavigationController 不正确地弹出视图(向下滑动,而不是向右滑动)【英文标题】:iOS storyboarding UINavigationController pops view improperly (slides down, instead of to the right) 【发布时间】:2012-09-10 13:42:07 【问题描述】:

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

这是应用程序结构:

1 UITabBarController    2 UINavigationController       3 UITableViewController    2 UINavigationController       3 UIViewController

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

为了确保情节提要的 segue 是“推送”的,而不是模态的。您可以在 Interface Builder 中对此进行检查 - 转到情节提要并单击 segue 连接线。在标识 segue 名称的对象检查器中,就在它下面应该说“push”而不是“modal”。如果显示“modal”,将其更改为“push”,动画应该会自行纠正。

还要确保在您的代码中使用 preformSeque ... 方法来显示下一个视图控制器,而不是执行类似 presentModalViewController ....的操作。

【讨论】:

好东西。可悲的是,情况并非如此。视图通过 Segue 被推送(它设置为推送,而不是模态)。项目中没有“presentModalViewController”。推(和弹出)在纵向模式下可以正常工作,但在横向模式下弹出不能正确动画。 看到了你的回答,很好。我考虑过,但没有去那里,因为你说它是旋转的。【参考方案2】:

我的错!

我忘记更新所有视图控制器中的shouldAutorotateToInterfaceOrientation 方法。原文如下:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    return (interfaceOrientation == UIInterfaceOrientationPortrait);

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    return YES;

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

【讨论】:

以上是关于iOS 故事板 UINavigationController 不正确地弹出视图(向下滑动,而不是向右滑动)的主要内容,如果未能解决你的问题,请参考以下文章

iOS Xcode LaunchScreen故事板无法显示

iOS 故事板中的图像更改纵横比

iOS 故事板是不是有类似 android 的布局资源文件?

自定义捆绑在 iOS 框架文件中的故事板

未选择 iOS iPad 故事板

在 iOS 13 之后的未来 iOS 版本中是不是仍支持故事板? [关闭]