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

Joe*_*ler 6 iphone rotation uinavigationcontroller popviewcontroller ipad

我有两个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"的视图仍然显示.

在研究这个问题时,我看到其他答案建议手动执行旋转([UIDevice setOrientation]或通过转换),但这无助于理解问题是什么,特别是为什么它在两个操作系统之间的行为不同.

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

Joe*_*ler 1

看来较新的操作系统要求 UINavigationController 堆栈中的所有 UIViewController 支持相同的方向集。