UITabBarController和UINavigation Controller的iOS8旋转问题

时间:2014-10-14 07:19:07

标签: ios objective-c iphone ios8

我对iOS8有一个问题。

这里我有视图层次结构。

窗口==> UITabBarController ==> 2标签 标签1 ==> UINavigationController1 ==> UIViewController1作为根视图控制器 标签2 ==> UINavigationController2 ==> UIViewController2作为根视图控制器

现在一切都朝着一个方向发展。

但问题在于测试步骤:

  1. 将日志放入ViewController的viewDidLoad方法中以跟踪事件
  2. 启动应用
  3. FirstViewController的viewDidLoad将调用。现在只留在这个视图上。
  4. 旋转至风景。
  5. 这是神奇的部分。调用了SecordViewController的viewDidLoad方法,该方法尚未被Tab2激活,然后它也加载了viewDidLoad。
  6. 此问题仅适用于iOS8。
    测试了所有设备。

1 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。我注意到在iOS8上,当设备的方向发生变化时 viewWillTransitionToSize:withTransitionCoordinator:在UITabBarController上调用,UITabBarController调用尚未加载的任何viewcontroller的viewDidLoad方法。

现在,在我的UITabBarController子类中,我重写此方法不调用[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]。

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    //Do not call [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    NSLog(@"Device orinetation changed");
}