寫iOS應(yīng)用時,經(jīng)常需要將UITabBarController嵌入到一個根UINavigationController中梭姓,如果處理不好,我們會遇到這樣的錯誤:
Two-stage rotation animation is deprecated. This application should use the smoother single-stage animation.
網(wǎng)上找了一下嫩码,StackOverFlow的這個答案說誉尖,不應(yīng)該將UITabBarControllier嵌入到UINavigationController中作為rootViewController,但是铸题,我們的確想要這樣做铡恕,所以只好尋找其它辦法琢感。不過,至少我們可以確定的是探熔,問題出在rootViewController同時包含UITabBarController和UINavigationController驹针。
幾經(jīng)嘗試,最后發(fā)現(xiàn)诀艰,在設(shè)置為window.rootViewController之前柬甥,先指定tabBarController.selectedIndex = 0,問題解決其垄。
可以得出苛蒲,出現(xiàn)上述錯誤,是因為XCode不知道你需要push哪個子viewController绿满,在加載navigationController的時候臂外,不知道要載入哪一個controller,于是無腦的將tabBarController的viewControllers都動畫載入了喇颁。
完整代碼如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navVC = [storyBoard instantiateInitialViewController];
//MainViewController是UITabBarController的子類
MainViewController *rootVC = (MainViewController *)navVC.visibleViewController;
rootVC.delegate = self;
rootVC.selectedIndex = 0;? //需要這樣設(shè)置
self.window.rootViewController = navVC;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}