让我解释一下。 我有两个ViewControllers(Login-Page和Main-Page)。 登录页面包含两个按钮(FB和G +登录按钮)。 使用登录凭据一切正常,并呈现下一个主页面视图。 在Main-Page中我有按钮(注销).Button应该像唱歌一样工作并将我带回Login-Page,遗憾的是不能正常工作。 以下是我的代码
let vc = self.storyboard?.instantiateViewController(withIdentifier: "LoginPage") as! LoginPage
vc.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
self.present(vc, animated: true, completion: nil)
正在显示
fatal error: unexpectedly found nil while unwrapping an Optional value
并且Main-Page
中所有已声明的IBOutlet的输出为nil我需要帮助!!! ??
答案 0 :(得分:0)
在您注销该应用时尝试使用通知更改根目录。
首先在你的appDelegate addObserver:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Notification used in logout action
let notf = NSNotificationCenter.defaultCenter()
notf.addObserverForName("logout", object: nil, queue: NSOperationQueue.mainQueue()) { (notification) in
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginPage") as! LoginPage
self.window?.rootViewController = controller
}
return true
}
然后在logoutAction中简单地postNotification
func logout() {
NSNotificationCenter.defaultCenter().postNotificationName("logout", object: nil)
}
答案 1 :(得分:0)
首先,我们验证视图控制器是否在Storyboard ID
上有Identity inspector
:
然后:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginViewController = storyboard.instantiateViewController(withIdentifier: "LoginPage")
let window = UIApplication.shared.windows[0] as UIWindow
UIView.transition(with: window,
duration: 0.5,
options: UIViewAnimationOptions.transitionCrossDissolve,
animations: {
window.rootViewController = loginViewController
}, completion: nil)
这样,您将替换登录视图控制器的呈现视图控制器。