故事板上的侧边栏导航菜单

Posted

技术标签:

【中文标题】故事板上的侧边栏导航菜单【英文标题】:Sidebar Navigation Menu on Storyboard 【发布时间】:2014-03-26 15:58:38 【问题描述】:

我遵循了 TreeHouse 教程,了解如何创建登录/注册屏幕以及添加侧边栏导航菜单的 AppCoda 教程:http://www.appcoda.com/ios-programming-sidebar-navigation-menu/

我的主视图控制器连接了登录/注册栏,该主视图控制器连接到侧边栏视图控制器。这导致了一个有趣的错误,我可以在不登录的情况下进入主屏幕。

谁能建议一个故事板布局,我可以在我登录时使侧边栏滑动?

【问题讨论】:

我理解正确,你的RootViewController是MasterViewController,当用户打开你的应用时,如果他没有登录,他会重定向到登录页面(通过push(?)导航)? 是的,正确!我确实使它成为根 【参考方案1】:

在你的 LoginController(或什么名字)中添加这一行 viewDidLoad:

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

它将停止弹出的默认平移手势。试试看。

【讨论】:

【参考方案2】:

我通常处理此问题的方式是使用另一个 viewController 来处理不属于主应用导航的登录。

然后,登录控制器可以做任何它需要登录的事情,并在用户通过身份验证后执行以下操作:

-(void) loginDidComplete 

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kLoginKey];
    AppDelegate *appDelegateTemp = [[UIApplication sharedApplication]delegate];
    appDelegateTemp.window.rootViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard"
                                                                           bundle:[NSBundle mainBundle]]
                                                 instantiateInitialViewController];


    [[NSNotificationCenter defaultCenter] postNotificationName:@"UserDidLogin" object:nil userInfo:nil];


在应用代理的应用程序didFinishLaunchingWithOptions中,我们可以通过以下方式检查用户是否已登录:

if ([User userAuthenticated] ) //if user is auth correctly, then we go to the main view

    self.window.rootViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard"
                                                                bundle:[NSBundle mainBundle]]
                                      instantiateInitialViewController];

else //otherwise we show the login controller

    self.window.rootViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard"
                                                                bundle:[NSBundle mainBundle]]
                                      instantiateViewControllerWithIdentifier:@"LoginViewController"];

添加了一个屏幕截图来演示情节提要中的 2 个视图控制器

【讨论】:

很抱歉 - 不太确定如何实施您的建议。我刚开始并开始学习故事板,那么您是否可以展示一个图像示例来说明您的故事板将如何布局?我使用 Parse 作为登录验证器,当我第一次启动 MasterViewController 时,它会在那里检查登录验证。如果未登录,则推送到登录屏幕。 我添加了一个屏幕截图 - 所以基本上我的“MasterViewController”会做应用程序应该做的事情。登录视图控制器将负责登录。然后,您只需根据需要更改 2 件事。 或者我想另一种方法是让您的 MasterViewController 以模态方式显示登录屏幕,前提是用户未登录。然后必须在用户看到下面的视图之前将其关闭。可能会更容易。

以上是关于故事板上的侧边栏导航菜单的主要内容,如果未能解决你的问题,请参考以下文章

使用单击侧边栏导航菜单项调用活动

jQuery+css3侧边栏导航菜单

引导侧边栏导航菜单滚动到活动面板标题的顶部

SWRevealViewController 隐藏我的前视图控制器的导航栏

如何通过网络请求拿到我们的导航栏中所有菜单数据

在导航到另一个视图控制器之前切换标签栏