故事板上的侧边栏导航菜单
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 以模态方式显示登录屏幕,前提是用户未登录。然后必须在用户看到下面的视图之前将其关闭。可能会更容易。以上是关于故事板上的侧边栏导航菜单的主要内容,如果未能解决你的问题,请参考以下文章