如何将UINavigation添加到自定义RootViewController

时间:2015-08-07 10:56:31

标签: ios uinavigationcontroller nsuserdefaults

我已将用户ID存储在NSUserDefault中。我的应用位于UINavigationController下,表示所​​有ViewController都与UINavigationController相关联。现在,如果用户未登录,则应显示第一个屏幕,即登录或注册。但是当用户登录时,app应该以root身份显示主屏幕。以下是我在AppDelegate.m中所做的事情:

    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的屏幕时,它上面没有导航栏。那我该怎么办呢?

3 个答案:

答案 0 :(得分:0)

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

[self.window setRootViewController:homeNavViewCtrl];

答案 1 :(得分:0)

您将HomeViewController直接设置为rootViewController,因此它未嵌入导航控制器中(导航控制器是提供导航栏的原因,因此这就是您没有看到导航控制器的原因)。

要使用导航控制器,请在您的故事板中嵌入HomeViewController {{1>}(编辑器>嵌入>导航控制器),并为该导航控制器指定标识符(例如“HomeNavigationController”)。然后,在您的代码中:

UINavigationController

或者,您可以通过编程方式将UINavigationController *navController = (UINavigationController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeNavigationController"]; [self.window setRootViewController:navController]; 嵌入导航控制器中:

HomeViewController

答案 2 :(得分:0)

试试这个:

 LoginViewController *loginController=[[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"loginController"]; //or the homeController
UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:loginController];
self.window.rootViewController=navController;