2013-11-23 5 views
0

Я пытаюсь добавить функцию входа в Facebook в своем приложении. Однако почему-то это приводит к ошибке «UIViewControllerHierarchyInconsistency», причина: «добавление контроллера корневого представления в качестве дочернего элемента контроллера просмотра:« ». Мой делегат приложения написан следующим образом. Может ли кто-нибудь дать мне совет, как я могу решить проблему?facebook login with tabBarController

AppDelegate.h

@property (strong, nonatomic) UITabBarController *tabBarController; 
    @property (strong, nonatomic) UINavigationController *navigationController; 
    @property (strong, nonatomic) LoginViewController* loginViewController; 
    @property (strong, nonatomic) FirstViewController *mainViewController; 

AppDelegate.m

self.loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" 
                    bundle:nil]; 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.loginViewController]; 
    self.navigationController.delegate = self; 
    self.window.rootViewController = self.navigationController; 

    [self.window makeKeyAndVisible]; 

    //mainwindow 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // ViewControllers array 
    NSMutableArray *viewControllers = [[NSMutableArray alloc] init]; 
    [self resetMainViewController]; 

    //homeview 
    self.mainViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
    //adding navigation controller 
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainViewController]; 
    [viewControllers addObject:self.navigationController]; 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 

    //secondview 
    SecondViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
    //adding navigation 
    UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:viewController2]; 
    [viewControllers addObject:navController2]; 

    // Thirdview 
    ThirdViewController *viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; 
    //adding navigationcontroller 
    UINavigationController *navController3 = [[UINavigationController alloc] initWithRootViewController:viewController3]; 
    [viewControllers addObject:navController3]; 

    //fourthview 
    FourthViewController *viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil]; 
    //adding navigation controller 
    UINavigationController *navController4 = [[UINavigationController alloc] initWithRootViewController:viewController4]; 
    [viewControllers addObject:navController4]; 

    //fifthviewcontroller 
    FifthViewController *viewController5 = [[FifthViewController alloc] initWithNibName:@"FifthViewController" bundle:nil]; 
    //adding navigation controller 
    UINavigationController *navController5 = [[UINavigationController alloc] initWithRootViewController:viewController5]; 
    [viewControllers addObject:navController5]; 


    //tabbarcontroller 
    self.tabBarController = [[UITabBarController alloc] init]; 
    [self.tabBarController setViewControllers:viewControllers]; 

    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 

Спасибо.

+0

все вышеуказанный код в комплектеFinishLaunchingWithOptions способ? – chancyWu

+0

Да, все они в методе didFinishLaunchingWithOptions. – kenken

+0

Я думаю, вы должны удалить все остальные функции self.window.rootViewController. последнего достаточно. – chancyWu

ответ

0

Вы устанавливаете self.navigationController к self.window.rootViewController в начале, а затем добавить его в viewcontrollers в self.tabBarController, это проблема. Вы должны удалить все остальные назначения self.window.rootViewController и остаться последним.