UITabBarController和UINavigation控制器的iOS8旋转问题

我有一个iOS8的问题。

这里我有我的视图层次结构。

Window ==> UITabBarController ==> 2 Tab Tab 1 ==> UINavigationController1 ==> UIViewController1作为根视图控制器Tab 2 ==> UINavigationController2 ==> UIViewController2作为根视图控制器

现在一切工作都完美了。

但问题是这个testing步骤:

  1. 将日志logging在两个ViewController的viewDidLoad方法中,用于跟踪事件
  2. 启动应用程序
  3. FirstViewController的viewDidLoad将会调用。 现在只停留在这个视图上。
  4. 旋转到风景。
  5. 这是神奇的一部分。 SecordViewController的viewDidLoad方法被调用,它还没有被Tab2激活,然后它也加载了viewDidLoad。

这个问题只在iOS8上。
testing所有设备。

我有同样的问题。 我注意到,在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"); }