不在标签栏视图控制器中仅旋转一个视图

时间:2012-02-06 08:45:42

标签: objective-c ios xcode

我知道这个问题已被问到并且已经调查了其他人发布的解决方案,但仍然对这个主题感到很困惑,所以我很抱歉这是否真的是一个“noob”问题。

所以我有一个标签栏视图控制器,我有2个应该自动旋转的视图和一个永远不应该的视图。我的理解是,shouldAutorotateToInterfaceOrientation需要始终返回YES;为了让任何视图控制器自动旋转。因此,如果是这种情况,我将如何只获得一个不旋转但保持订单轮换?

非常感谢!

P.S。我在这里找到的另一篇文章中尝试了这个:How to prevent the view controllers in a tab bar controller from rotating?但没有运气。该帖子的答案发布在

下面

“这是一个常见的”错误“ - 但是一个好的解决方法是强制如下触发shouldAutorotateToInterfaceOrientation:选择器:”

   - (void)viewDidAppear:(BOOL)animated {
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = [window.subviews objectAtIndex:0];
[view removeFromSuperview];
[window addSubview:view];
} 

1 个答案:

答案 0 :(得分:1)

您的目标是与UITabBarController的轮换规则发生冲突。你自己提到了:

  

shouldAutorotateToInterfaceOrientation需要   始终返回YES以使任何视图控制器自动旋转。

但是你想要的是其中一个视图控制器返回NO,这违反了该规则。因此,要回答您的问题,您必须实现自己的自定义视图控制器容器(或自定义视图)。

这个限制被添加到UITabBarController的原因很充分。具有不同旋转规则的选项卡会让用户烦恼,因为每次更改标签时屏幕都会一直旋转。

如果我是你,我将允许所有标签旋转,然后将非旋转视图显示为模态视图。