iOS8中UITabBarController和UINavigationController旋转问题

6

我在iOS8上遇到了一个问题。

这里是我的视图层次结构:

Window ==> UITabBarController ==> 2个选项卡 选项卡1 ==> UINavigationController1 ==> UIViewController1作为根视图控制器 选项卡2 ==> UINavigationController2 ==> UIViewController2作为根视图控制器

现在在一个方向上一切都工作得很好。

但是问题出现在以下测试步骤中:

  1. 在两个ViewController的viewDidLoad方法中记录事件
  2. 启动应用程序
  3. 将只调用FirstViewController的viewDidLoad。现在仅停留在此视图上。
  4. 旋转到横向模式。
  5. 这是神奇的部分。即使Tab2还没有被激活,SecordViewController的viewDidLoad方法也会被调用并加载。

这个问题仅存在于iOS8上。
已在所有设备上进行了测试。

1个回答

13

我有同样的问题。我注意到在iOS8中,当设备方向改变时, viewWillTransitionToSize:withTransitionCoordinator:会被UITabBarController调用,而UITabBarController会调用尚未加载的任何视图控制器的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");
}

2
我还添加了以下代码:[self.selectedViewController viewWillTransitionToSize:size withTransitionCoordinator:coordinator];以便将调用转发到所选的视图控制器。 - dlinsin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接