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

时间:2014-03-26 15:58:39

标签: ios storyboard sidebar

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

我的登录/注册栏附加到我的主视图控制器,它连接到侧边栏视图控制器。这是一个有趣的错误,我可以在没有登录的情况下进入主屏幕。

任何人都可以建议一个故事板布局,只有在我登录时才能让侧边栏可以滑动吗?

GIF of bug

My Storyboard layout

2 个答案:

答案 0 :(得分:3)

在您的LoginController(或名称)中,在viewDidLoad中添加此行:

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

它将停止弹出窗口的默认平移手势。试试吧。

答案 1 :(得分:0)

我通常使用这个问题的方法是让另一个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];

}

在app delegate的应用程序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个viewcontrollers

enter image description here