我已將我的應用程序中的自動登錄功能實現到鏈接到登錄視圖控制器的視圖控制器中。但是,如下所示,故事板在啓動屏幕後首先導航到登錄屏幕。當在密鑰庫中找到憑證時,應用程序將自動登錄,但在繼續前,屏幕仍然會閃爍。自動登錄時阻止登錄屏幕顯示
我怎樣才能確保登錄屏幕如果用戶憑據已經在密鑰庫並直接導航到Reveal View Controller
會不會出現?
我已將我的應用程序中的自動登錄功能實現到鏈接到登錄視圖控制器的視圖控制器中。但是,如下所示,故事板在啓動屏幕後首先導航到登錄屏幕。當在密鑰庫中找到憑證時,應用程序將自動登錄,但在繼續前,屏幕仍然會閃爍。自動登錄時阻止登錄屏幕顯示
我怎樣才能確保登錄屏幕如果用戶憑據已經在密鑰庫並直接導航到Reveal View Controller
會不會出現?
- 存儲在你的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
}
補到@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()
我嘗試這一點,錯誤結果:'無法實例UIMainStoryboardFile'Main'的默認視圖控制器 - 可能指定的入口點沒有設置? – Sauron
是的,我總是看到警告,但我沒有看到那會影響性能。 –
顯示完整的stroyboad場景 –