在iOS 8中,Tabbar的viewcontroller在更改方向时会重新加载

Bhu*_*esh 7 iphone objective-c uitabbarcontroller orientation ios

我有一个UITabBarController几个标签.当我改变应用程序的方向时,在iOS 8中,所有它的viewController viewDidLoad都会被调用.当我在iOS 7中运行应用程序时,这不会发生.

iOS 8的任何新功能是否会UITabBarController在方向更改时重新加载?如果是这样我怎么能阻止我的Tabbar重新加载它的视图控制器.

Kan*_*IOS 2

Parul Garg 是正确的,我也遇到过同样的问题。

请注意,一旦启用,您将需要手动调用方向更改方法viewWillTransitionToSize。

每次方向改变方法调用时,都会调用该方法以及tabbar类中的方法。

解决办法是使用手动调用,如下:

-(void) viewWillTransitionToSize:(CGSize)sizewithTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
 //[super viewWillTransitionToSize:sizewithTransitionCoordinator:coordinator];
   UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
   UIInterfaceOrientation toInterfaceOrientation = orientation;    
   if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController *navCtrl = (UINavigationController*)self.selectedViewController;
        UIViewController* NavSubController = [[navCtrl viewControllers] lastObject];
        [NavSubController willRotateToInterfaceOrientation:toInterfaceOrientation duration:0.0];
   }
}
Run Code Online (Sandbox Code Playgroud)