Iphone 使用自定义TabBarController时不调用shouldAutorotateToInterfaceOrientation
我创建了一个从UIViewController继承的自定义TabBarController(不是UIAbbarController,因为它不用于子类化)。除了方向支持外,其他一切都正常 My TabBarController在My UIWindow上设置为rootViewController,并包含UIViewController的内部数组。在我的例子中,我添加了UINavigationControllers作为每个选项卡的根 当将新UIViewController推送到TabBarController中的任何UINavigationController时,我会接到一个呼叫shouldAutorotateToInterfaceOrientation,这一切都很好,因为在这里我可以设置哪个UIViewController应该支持哪个方向(如Apple文档中所述) 但是,当我通过按UINavigationBar中的“后退”按钮返回时,我没有接到shouldAutorotateToInterfaceOrientation的调用,因此我们显示的视图将以错误的方向结束 我做了一个快速测试,用UITabBarController替换了我的自定义TabBarController,当按下后退按钮时,我接到了shouldAutorotateToInterfaceOrientation的呼叫,因此这里一定有问题,但我无法找出原因 为什么我没有接到shouldAutorotateToInterfaceOrientation的电话?UtiAbbarController正在做我错过的事情吗 这里有人经历过同样的问题吗?你有什么想法值得一试吗?因为我的想法已经没有了 编辑 通过使用iOS5容器视图控制器将TabBarController中的每个UIViewController作为子级添加,可以解决此问题 使用以下方法将UIViewController添加为子级:addChildViewController然后自动覆盖ForwardAppearanceAndRotationMethodToChildViewController并返回YESIphone 使用自定义TabBarController时不调用shouldAutorotateToInterfaceOrientation,iphone,objective-c,uitabbarcontroller,uiinterfaceorientation,Iphone,Objective C,Uitabbarcontroller,Uiinterfaceorientation,我创建了一个从UIViewController继承的自定义TabBarController(不是UIAbbarController,因为它不用于子类化)。除了方向支持外,其他一切都正常 My TabBarController在My UIWindow上设置为rootViewController,并包含UIViewController的内部数组。在我的例子中,我添加了UINavigationControllers作为每个选项卡的根 当将新UIViewController推送到TabBarContro
现在,您应该在UIViewControllers中获得shouldAutorotateToInterfaceOrientation回调我以前见过这样的问题,它总是归结为将
-shouldAutorotateToInterfaceOrientation:
方法添加到所有视图控制器中,而不是像您预期的那样仅添加到最上面的一个
(如果您很懒,只需将一个类别添加到
UIViewController
)我已将此方法添加到所有视图控制器中,但仍然没有收到调用。不过,我刚刚了解了iOS5中新的容器视图控制器。通过使用addChildViewController在选项卡栏控制器中将我的视图控制器添加为子视图,并自动覆盖ForwardAppearanceandRotationMethodToChildViewController返回YES,我将获得shouldAutorotateToInterfaceOrientation回调!酷。请记住,在没有子类化的情况下使用的视图控制器也是视图控制器。