带导航控制器的Tabbar控制器方向ios 6

带导航控制器的Tabbar控制器方向ios 6,ios,uinavigationcontroller,ios6,uitabbarcontroller,Ios,Uinavigationcontroller,Ios6,Uitabbarcontroller,我目前正在做一个项目,我们有一个带有4个选项卡的选项卡栏控制器,每个选项卡都有一个导航控制器。在每一个导航控制器上,都有多个推送的ViewController 我在这里和其他地方读了很多帖子,我们目前做了以下工作: - (NSUInteger) supportedInterfaceOrientations{ return UIInterfaceOrientationMaskPortrait; } - (BOOL)shouldAutorotateToInterfaceOrientatio

我目前正在做一个项目,我们有一个带有4个选项卡的选项卡栏控制器,每个选项卡都有一个导航控制器。在每一个导航控制器上,都有多个推送的ViewController

我在这里和其他地方读了很多帖子,我们目前做了以下工作:

- (NSUInteger) supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    return YES;
}
子类UITabbarcontroller

- (BOOL)shouldAutorotate
{

    return [[[self.viewControllers objectAtIndex:self.selectedIndex]topViewController] shouldAutorotate];

}

- (NSUInteger) supportedInterfaceOrientations
{
    return [[[self.viewControllers objectAtIndex:self.selectedIndex]topViewController]supportedInterfaceOrientations];
}

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    return [[[self.viewControllers objectAtIndex:self.selectedIndex]topViewController] shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
}
如果我们在每个ViewController中指定以下内容,则这项工作正常:

- (NSUInteger) supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    return YES;
}
这将按预期将其锁定为纵向

但现在真正的问题出现了! 如果我们在其中一个选项卡上的viewcontroller中指定它应该旋转到横向,它工作正常,但当我们更改选项卡时,它仍然处于横向,这不是我们想要的

总而言之,有没有人找到一个解决方案,可以将几乎所有视图锁定到给定的方向(除了一个),并且可以在指定方向(此处为纵向)上更改选项卡的位置


我也读过这篇文章,但有一条评论也提到“这几乎对我有用。问题是,当我将选项卡切换到仅纵向视图时,如果我已经在横向视图中,它仍然在横向视图中。旋转纵向视图修复了它,并且它不会旋转回横向视图,但在第一次加载时,我仍然需要它在纵向视图中”在这里几乎是一样的。

我自己也有这个问题,我想出了一个解决方案,虽然不漂亮,但很有效

在TabbarController子类中,实现此TabbarController委托函数(请记住设置委托):

在选项卡navigationcontroller中按下并弹出uinavigationcontroller将使tabbarcontroller再次启动其方向功能,如果正确实现方向代码,它将更改为所需的方向

我希望这有帮助,如果我需要详细解释,请随时发表评论

致意
莫顿

嗯,它可能不漂亮,但它是一种魅力!我现在可以将一个视图切换为横向视图,而其他视图则保持纵向视图,即使您切换选项卡!谢谢你多次的帮助!正如您所说的,设置委托很重要,我在ViewWill中完成了它,它将出现在我的子类中,并按预期工作!希望这也能对其他人有所帮助。嗯,这不是在搞乱内部内存管理吗?iOS在选项卡栏控制器中添加了视图控制器?我们面临的问题是,我们的整个应用程序都已经编写了故事板,这意味着我们无法在代码中初始化视图控制器。对于使用情节提要的项目,有没有办法解决这个问题?@jowie:您可以向情节提要中添加一个空的视图控制器,分配一个情节提要id,然后调用[self.Storyboard instanceeviewcontrollerwhiteIdentifier:@“EmptyVC”]。