接口方向和UITabBarController的问题

时间:2010-08-06 16:18:28

标签: iphone uitabbarcontroller uiinterfaceorientation

快速问题:

我有一个带2个导航控制器的UITabBarController [让我们称之为左右控制器]

在默认选择的左侧控制器上,我可以推送一个检测界面方向的新视图控制器。

在右侧控制器上我可以推送相同的视图控制器,但它不会检测接口方向,或者就此而言,它甚至都不会进入所有的T ___ T

的shouldAutoRotateInterface方法

Haaalp !!

如果它有任何相关性,我推动的View Contoller使用hidesBottomBarWhenPushed属性。

3 个答案:

答案 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的子视图控制器必须让它的父实现自动旋转。