导航栏在第一个 运行 之后没有显示
Navigation bar didn't show after first run
我正在使用 this library 在我的应用程序中实现菜单。如果我删除应用程序并 运行 它,它会在主页上成功显示导航栏。但是,如果我在不注销的情况下退出该应用程序,然后再次 运行 它不会显示导航栏。
现在我了解 NavigationController
的结构它是如何堆叠 ViewControllers
.
这是我在 AppDelegate.m
中所做的,以便在用户尚未登录时使我的 HomeViewController
我的 RootViewController
出账户。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
if([[NSUserDefaults standardUserDefaults]objectForKey:USERID] == nil)
{
NSLog(@"User is not logged in");
}
else
{
NSLog(@"User ID: %@",[[NSUserDefaults standardUserDefaults]objectForKey:USERID]);
HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
self.window.rootViewController=loginController;
}
return YES;
}
这是我在 HomeViewController
的 viewDidLoad
中所做的:
- (void)viewDidLoad
{
[super viewDidLoad]; self.rootNav = (CCKFNavDrawer *)self.navigationController;
[self.rootNav setCCKFNavDrawerDelegate:self];
self.navigationController.navigationBarHidden=NO;
self.navigationItem.title = @"Recent Posts";
self.navigationItem.hidesBackButton = YES;
}
此外,正如在 library 的演示中提到的,我使用 CCKFNavDrawer
作为我的 Class 用于我的 NavigationController
。
I认为我已经分享了足够多的内容来解释我的问题。让我知道是否需要更多信息。那么,我该怎么办呢?
如我所见,您正在将 UIViewController
作为 rootController。但是如果你想在顶部看到导航栏,你需要实例化 UINavigationController
并使用你的 HomeViewController
的 rootViewController 进行初始化。
注意:您需要将 UINavigationController
作为根视图控制器,而不是 HomeViewController
编辑:
HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
CCKFNavDrawer *navController = (CCKFNavDrawer *)[[CCKFNavDrawer alloc]initWithRootViewController:loginController];
self.window.rootViewController=navController;
我正在使用 this library 在我的应用程序中实现菜单。如果我删除应用程序并 运行 它,它会在主页上成功显示导航栏。但是,如果我在不注销的情况下退出该应用程序,然后再次 运行 它不会显示导航栏。
现在我了解 NavigationController
的结构它是如何堆叠 ViewControllers
.
这是我在 AppDelegate.m
中所做的,以便在用户尚未登录时使我的 HomeViewController
我的 RootViewController
出账户。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
if([[NSUserDefaults standardUserDefaults]objectForKey:USERID] == nil)
{
NSLog(@"User is not logged in");
}
else
{
NSLog(@"User ID: %@",[[NSUserDefaults standardUserDefaults]objectForKey:USERID]);
HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
self.window.rootViewController=loginController;
}
return YES;
}
这是我在 HomeViewController
的 viewDidLoad
中所做的:
- (void)viewDidLoad
{
[super viewDidLoad]; self.rootNav = (CCKFNavDrawer *)self.navigationController;
[self.rootNav setCCKFNavDrawerDelegate:self];
self.navigationController.navigationBarHidden=NO;
self.navigationItem.title = @"Recent Posts";
self.navigationItem.hidesBackButton = YES;
}
此外,正如在 library 的演示中提到的,我使用 CCKFNavDrawer
作为我的 Class 用于我的 NavigationController
。
I认为我已经分享了足够多的内容来解释我的问题。让我知道是否需要更多信息。那么,我该怎么办呢?
如我所见,您正在将 UIViewController
作为 rootController。但是如果你想在顶部看到导航栏,你需要实例化 UINavigationController
并使用你的 HomeViewController
的 rootViewController 进行初始化。
注意:您需要将 UINavigationController
作为根视图控制器,而不是 HomeViewController
编辑:
HomeViewController *loginController= (HomeViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
CCKFNavDrawer *navController = (CCKFNavDrawer *)[[CCKFNavDrawer alloc]initWithRootViewController:loginController];
self.window.rootViewController=navController;