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