2015-02-25 4 views
0

У меня очень странная ошибка в моем приложении. Приложение имеет две вкладки. Вкладка два показывает список отчетов. Если я коснусь одного из отчетов в Tab Two, приложение правильно отобразит детали отчета. Затем я нажимаю Tab и сразу же нажимаю Tab два. Приложение выходит из строя в iOS 8, но отлично работает для iOS 7.Tapping TabBar crashes App

Если я вернусь к контроллеру корневого представления Tab 2, прежде чем нажимать Tab Tab, нажатие Tab Two снова не приведет к сбою приложения. Любая идея, что может вызвать эту ошибку?

В AppDelegate классе у меня есть следующий код:

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController 
{ 
    UIViewController *currentController = tabBarController.selectedViewController; 
    if ([currentController isKindOfClass:[UINavigationController class]]) 
     [(UINavigationController *)currentController popToRootViewControllerAnimated:NO]; 

    return YES; 
} 
+0

Я положил оператор if, чтобы проверить, работает ли телефон iOS 8. Приложение перестало сбой. Все еще не уверен, почему код сбой для iOS 8. – BDR

ответ

0

Я разрешенный сокрушительный, поставив если заявление на коде, как показано ниже. Все еще не уверены, почему код сбой в iOS 8.

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController 
{ 

    #define SYSTEM_VERSION_LESS_THAN(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 

    if (SYSTEM_VERSION_LESS_THAN(@"8.0")) 
    { 
     NSLog(@"The iOS is less than 8"); 

     UIViewController *currentController = tabBarController.selectedViewController; 
     if ([currentController isKindOfClass:[UINavigationController class]]) 
      [(UINavigationController *)currentController popToRootViewControllerAnimated:NO]; 

     return YES; 
    } 


    return YES; 

}