我是iOS
- Swift
的新用户。我创建了一个简单的应用程序,登录后"performSegueWithIdentifier"
第一次正常工作但注销后我又回到根视图控制器,如果我再次登录,"performSegueWithIdentifier"
给了我fetal error (crash)
。我没有在登录视图中设置任何属性。我第一次不理解它的工作正常并且第二次出错。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.login()
}
func login() {
if user == nil {
self.presentViewController(logInView, animated: false, completion: nil)
} else {
self.performSegueWithIdentifier("Home", sender: self) // Here I m getting error after logout when i log in again.
}
}
在我的第二个视图中,退出后我写了这个:
self.navigationController?.popToRootViewControllerAnimated(false)
我得到的错误如下:
致命错误:在解包可选值时意外发现nil
我的故事板层次结构是: 导航控制器 - ViewController(loginview) - TabbarController(HomeView) - 四个选项卡两个视图控制器和两个TableViewControllers。 从TableViewController之一我调用方法
self.navigationController?.popToRootViewControllerAnimated(假)
然后它回到ViewController(loginview)但是如果我再次尝试登录那个时候Tabbar视图控制器不存在。我通过以下代码得到这个:
print(" NextView =(storyboard.instantiateViewControllerWithIdentifier(" Home"))")//这里只有胎儿出错。
答案 0 :(得分:0)
您可以像这样更改根视图控制器:
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) // "Main" is storyboard name
let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("id") as UITabBarController
UIApplication.sharedApplication().keyWindow?.rootViewController = viewController;