2014-03-26 307 views
1

我已經按照關於如何創建一個登錄/註冊畫面樹屋教程還有AppCoda教程添加一個側邊欄導航菜單:http://www.appcoda.com/ios-programming-sidebar-navigation-menu/側欄導航菜單

我已經登錄/註冊棒連接到我的主視圖控制器,它連接到邊欄視圖控制器。這使得我可以在沒有登錄的情況下進入主屏幕的一個有趣的錯誤。

任何人都可以建議一個故事板佈局,只有當我登錄時可以使側欄滑動嗎?

GIF of bug

​​

+0

我理解正確,你的RootViewController是MasterViewController,當用戶打開你的應用程序,如果他沒有登錄,他會重定向到登錄頁面(通過推(?)導航)? – waki

+0

是的,正確!我確實把它作爲根 –

回答

3

在你的LoginController(或什麼名字)添加此行viewDidLoad

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

將停止缺省的平移手勢彈出。嘗試一下。

+0

yessss!謝謝=) –

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]; 

} 

而在應用程序委託的應用程序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"]; 
} 

添加的屏幕截圖展示在故事板

個viewcontrollers

+0

我很抱歉 - 不知道如何去實施你的建議。我剛開始並開始學習故事板,那麼你是否有可能展示一個圖片展示你的故事板將如何佈置?我使用Parse作爲登錄身份驗證器,當我第一次啓動MasterViewController時,它會在那裏檢查登錄身份驗證。如果未登錄,請按登錄屏幕。 –

+0

我添加了一個截圖 - 基本上我這樣做的方式我的「MasterViewController」只會做應用程序應該做的。登錄視圖控制器將負責登錄。然後你只需根據需要更改2件事情。 – MikeT

+0

或者我想另一種方法是讓登錄屏幕以模態方式從您的MasterViewController呈現,即用戶未登錄。然後必須在用戶看到下方的視圖之前將其解除。可能會更容易。 – MikeT