2016-07-05 106 views
0

我是iOS - Swift中的新成员。我创建了简单的应用程序,第一次登录后"performSegueWithIdentifier"工作正常,但注销后,我回到根视图控制器,如果我再次登录,"performSegueWithIdentifier"给我fetal error (crash)。我没有从我的登录视图设置任何属性。我不明白它第一次工作正常,第二次出错。“performSegueWithIdentifier”给出致命错误

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) 

错误我得到的是以下几点:

fatal error: unexpectedly found nil while unwrapping an Optional value

我的故事板层次是: 导航控制器 - 视图控制器(loginview) - TabbarController(HomeView) - 四个选项卡两个视图控制器和两个TableViewControllers。 从TableViewController我打电话方法之一

self.navigationController?.popToRootViewControllerAnimated(假)

那么它回来的ViewController(loginview),但如果我再次尝试登录到时候的TabBar视图控制器不当下。我得到这个代码如下:

print(“NextView =(storyboard.instantiateViewControllerWithIdentifier(”Home“))”)//这里只有我得到胎儿的错误。

+1

Show.Your.Code。 – vadian

+0

当您注销时,您设置了什么作为rootviewcontroller –

+0

您应该在登录后更改rootviewcontroller。 –

回答

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; 
+0

Thnx,但这并没有解决我的问题。 –