" performSegueWithIdentifier"给出致命错误

时间:2016-07-05 09:53:46

标签: ios swift

我是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"))")//这里只有胎儿出错。

1 个答案:

答案 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;