popViewController不会自动返回到允许的方向

时间:2010-05-07 19:06:10

标签: iphone ipad uinavigationcontroller rotation popviewcontroller

我有两个UIViewControllers,“A”和“B”,其中“A”覆盖了shouldAutorotateToInterfaceOrientation,为UIInterfaceOrientationPortrait返回YES,“B”为所有方向返回YES。在我的例子中,“A”是根导航视图控制器,然后我使用pushViewController作为“B”。之后我将设备旋转成横向,成功自动旋转“B”,然后弹出“B”(后退按钮或通过popViewController)返回“A”。

在定位iPhone OS 3.1.3时,“A”会按预期返回纵向。在针对iPhone OS 3.2时,我有两个副作用:

  1. “A”以横向显示。
  2. 即使现在显示“A”,导航栏也不会更新。导航栏仍显示“B”的项目。只有在尝试返回/弹出一次之后,导航栏才会生成动画以显示“A”的项目。如果我试图再次按“B”并返回,我必须在导航栏动画之前弹出两次以显示“A”的项目。在这些“中间弹出”期间,“A”的视图仍然显示。
  3. 在研究这个问题时,我看到其他答案建议手动执行轮换([UIDevice setOrientation]或通过转换),但是这无助于理解问题是什么,特别是为什么它在两个操作系统之间的行为不同。

    所以我的问题是:UINavigationController堆栈上的所有UIViewControllers都必须支持完全相同的方向吗?如果没有,那么我需要做些什么才能让它像OS 3.1.3一样运行?

2 个答案:

答案 0 :(得分:1)

似乎较新的操作系统要求UINavigationController堆栈中的所有UIViewControllers都支持相同的方向集。

答案 1 :(得分:0)

我遇到了同样的问题,我在这个链接上找到了答案:UINavigationController navigation stack problems in landscape mode我的一个视图控制器没有在shouldAutorotateToInterfaceOrientation上返回YES。