2016-05-15 114 views
2

我已將我的應用程序中的自動登錄功能實現到鏈接到登錄視圖控制器的視圖控制器中。但是,如下所示,故事板在啓動屏幕後首先導航到登錄屏幕。當在密鑰庫中找到憑證時,應用程序將自動登錄,但在繼續前,屏幕仍然會閃爍。自動登錄時阻止登錄屏幕顯示

enter image description here

我怎樣才能確保登錄屏幕如果用戶憑據已經在密鑰庫並直接導航到Reveal View Controller會不會出現?

+0

顯示完整的stroyboad場景 –

回答

1
  1. 存儲在你的loginScreen用戶細節
NSUserDefaults.standardUserDefaults().setObject("\(userNameTxtField.text!)", forKey: "userName") 
NSUserDefaults.standardUserDefaults().synchronize() 
  • 將這個功能在你的appDelegate
  • func userIsLoggedIn() { 
           let userName = NSUserDefaults.standardUserDefaults().stringForKey("userName") 
           if userName != nil { 
        //Navigate to Reveal View Controller 
           } 
          } 
    
  • 然後調用在ViewDidFinishLauchingWithOption函數(在AppDelegate中)
  • func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
         // Override point for customization after application launch. 
    userIsLoggedIn()   
    return true 
    
    } 
    
    2

    補到@Kerby吉恩答案。首先,在didFinishLaunchingWithOptions方法,像這樣刪除故事板的入口點,指定由碼點在你的應用程序代理:

    UIWindow * window 
    
    var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    
    //Slect initial viewController 
    self.window = UIWindow(frame: UIScreen.mainScreen.bounds) 
    UIViewController * viewController 
    var preferences: NSUserDefaults = NSUserDefaults.standardUserDefaults() 
    var userId: String = preferences["userId"] 
    
    if userId != nil { 
        viewController = storyboard.instantiateViewControllerWithIdentifier("NavigationController") 
    } 
    else { 
        viewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController") 
    } 
    self.window.rootViewController = viewController 
    self.window.makeKeyAndVisible() 
    
    +0

    我嘗試這一點,錯誤結果:'無法實例UIMainStoryboardFile'Main'的默認視圖控制器 - 可能指定的入口點沒有設置? – Sauron

    +0

    是的,我總是看到警告,但我沒有看到那會影響性能。 –