接口方向和UITabBarController的问题

Ayt*_*ing 2 iphone uitabbarcontroller uiinterfaceorientation

快速问题:

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

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

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

Haaalp!

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

Jan*_*ano 13

这很可能是你的问题:

标签栏控制器默认支持纵向方向,除非所有根视图控制器都支持这种方向,否则不要旋转到横向 方向.当发生设备方向更改时,选项卡栏控制器将查询其视图控制器数组.如果其中任何一个不支持方向,则标签栏控制器不会更改其方向.

解决方案是在每个导致您的视图的视图控制器上覆盖以下方法:

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

例如,使用UITabBarControllerIB中的默认值,将其替换为仅包含上述方法的子类.


Mar*_*off 8

我在这方面有点迟到了,但是我在启动时遇到了一个自动旋转问题,我想要一个标签栏应用程序,我总是以纵向运行.

应用程序的plist具有必要的设置以启动并且仅允许纵向模式,并且我的所有视图控制器仅允许纵向模式.然而,当我启动应用程序将我的iPhone保持在横向状态时,应用程序以纵向方式启动,但随后旋转到横向!

而不是子类UITabBarController,我直接无视UITabBarControllershouldAutorotateToInterfaceOrientation:使用上类类中的方法UITabBarController.我在我的app委托中包含了这段代码:

@implementation UITabBarController(UITabBarControllerCategory)

-(BOOL)shouldAutorotateToInterfaceOrientation:
                 (UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
Run Code Online (Sandbox Code Playgroud)

工作精美,非常轻巧.