2015-08-07 2 views
0

Я сохранил идентификатор пользователя в NSUserDefault. Мое приложение находится под UINavigationController означает, что все ViewController подключены к UINavigationController. Теперь, если пользователь не зарегистрирован, должен отобразить первый экран, который является логином или регистром. Но когда пользователь заходит, приложение должно показать домашний экран как root. Вот что я делаю в AppDelegate.m:
Как добавить UINAVigation к пользовательскому RootViewController

if([[NSUserDefaults standardUserDefaults]objectForKey:USERID] == nil) 
     { 
      NSLog(@"User is not logged in"); 
// default scenario will run i.e. login 
     } 
     else 
     { 
      NSLog(@"User ID: %@",[[NSUserDefaults standardUserDefaults]objectForKey:USERID]); 
      HomeViewController *home = (HomeViewController *)[mainStoryboard 
                     instantiateViewControllerWithIdentifier: @"HomeViewController"]; 

      [self.window setRootViewController:home]; 
     } 


Так что, когда он показывает экран home нет никакой панели навигации на нем. Итак, что мне здесь делать?

ответ

0
HomeViewController *home = (HomeViewController *)[mainStoryboard 
                    instantiateViewControllerWithIdentifier: @"HomeViewController"];  
UINavigationController *homeNavViewCtrl = [[ UINavigationController alloc ] initWithRootViewController:home ]; 

[self.window setRootViewController:homeNavViewCtrl]; 
0

Вы настраиваете HomeViewController непосредственно как rootViewController, поэтому он не встроен в навигации контроллер (контроллеры навигационные, что обеспечивают навигационную панель, так это то, почему вы не видите один).

Для использования навигации контроллер в раскадровку встроить HomeViewController в UINavigationController (Editor> Вставить в> Навигационный контроллер), и дать этому навигации контроллер идентификатор (например, «HomeNavigationController»). Затем в коде:

UINavigationController *navController = (UINavigationController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeNavigationController"]; 
[self.window setRootViewController:navController]; 

В качестве альтернативы, вы можете вставлять ваш HomeViewController в навигационном контроллере программно:

HomeViewController *homeVC = (HomeViewContller *)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"] 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: homeVC] 
[self.window setRootViewController:navController]; 
0

Попробуйте это:

LoginViewController *loginController=[[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"loginController"]; //or the homeController 
UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:loginController]; 
self.window.rootViewController=navController; 
Смежные вопросы