iphone - TabBarController旋转问题

问题描述:

我的应用程序有4个选项卡。所有视图控制器都支持旋转,并且在旋转设备时的确可以旋转。对于其中一个视图控制器,我需要在旋转时重新定位一些子视图。我在该视图控制器的willRotateToInterfaceOrientation中执行此操作,并且它工作正常。iphone - TabBarController旋转问题

当我切换到不同的选项卡,然后旋转设备,然后返回到原始选项卡时,问题就出现了。它显然还没有收到旋转通知,因为willRotateToInterfaceOrientation尚未被调用。所以看起来好像只有“活动”视图控制器得到通知设备已经旋转。

问题:如何让所有视图控制器(由TabBarController控制)旋转?

不幸的是,这是iOS 3.x中的一个错误。它在iOS 4.x中运行正常。我已经看到了手动跟踪方向更改的应用程序,然后为非活动的viewcontrollers手动执行轮换。吮吸。

+0

嗯。这是一款iPad应用程序,因此我正在iPad模拟器3.2上进行测试。你是说,一旦我可以用iPad 4.0构建,它会神奇地开始工作? – sol 2010-08-21 00:36:42

+0

它大概会在4.0+以上的iPad上工作;没有升级的用户当然仍然会得到这个错误。 – 2010-08-21 01:22:29

+0

我在4.3.5上面对同样的问题。我不确定这是一个iOS 3.x错误。使用自动调整掩码正确旋转的视图可以在从制表符到标签的情况下正常工作,但是如果需要自定义旋转代码,我发现没有自动调用旋转方法,并且您有两个选项,通过NSNotifications监视旋转更改,或者在viewWillAppear上执行黑客攻击。还有其他建议吗? – wasabi 2011-08-27 03:19:02

翻阅iOS 3.2文档以确保其正常工作,UITabBarController中有viewControllers属性。尝试是这样的:

for (UIViewController * viewController in tabBarController) { 
    // Do stuff here with each 'viewController'. 
} 

我建议你做的UIViewController-shouldAutorotateToInterfaceOrientation:法的东西,但你可能在你计划实现转动的另一种方式。

您还应该检查控制器的viewWillAppear方法中的界面方向,它的子视图框架正在更改。因为当您移动到新选项卡并旋转设备,现在当您点击另一个选项卡时,我们会调用viewWillAppear方法在那里你可以相应地改变帧。 我也面临同样的问题,我整理出使用这种方法