快速问题:
我有一个带2个导航控制器的UITabBarController [让我们称之为左右控制器]
在默认选择的左侧控制器上,我可以推送一个检测界面方向的新视图控制器。
在右侧控制器上我可以推送相同的视图控制器,但它不会检测接口方向,或者就此而言,它甚至都不会进入所有的T ___ T
的shouldAutoRotateInterface方法Haaalp !!
如果它有任何相关性,我推动的View Contoller使用hidesBottomBarWhenPushed属性。
答案 0 :(得分:13)
这很可能是你的问题:
标签栏控制器支持纵向 默认情况下方向,不要 旋转到横向 除非所有根视图控制器都支持此类方向。 当设备方向 更改发生,标签栏控制器 查询其视图控制器数组。 如果他们中的任何一个不支持 方向,标签栏 控制器不会改变它 取向。
解决方案是在导致您的视图的每个视图控制器上覆盖以下方法:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
例如,在IB中使用默认的UITabBarController
,将其替换为仅包含上述方法的子类。
答案 1 :(得分:8)
我在这方面有点迟到了,但是我在启动时遇到了一个自动旋转的问题,我想要一个标签栏应用程序,我总是以肖像方式运行。
应用程序的plist具有必要的设置以启动并且仅允许纵向模式,并且我的所有视图控制器仅允许纵向模式。然而,当我启动应用程序将我的iPhone保持在横向状态时,应用程序以纵向方式启动,然后旋转到横向!
而不是子类UITabBarController
,我只是使用类UITabBarController
上的类别覆盖shouldAutorotateToInterfaceOrientation:
的{{1}}方法。我在我的app delegate中包含了这段代码:
UITabBarController
效果很好,非常轻巧。
答案 2 :(得分:0)
你的uitabbarcontroller是否实现自动旋转?任何想要实现autorotate的子视图控制器必须让它的父实现自动旋转。