【问题标题】:"performSegueWithIdentifier" gives fatal error“performSegueWithIdentifier”给出致命错误
【发布时间】:2016-07-05 09:53:46
【问题描述】:

我是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(false)

然后它回到 ViewController(loginview) 但如果我再次尝试登录那个时候 Tabbar 视图控制器不存在。我通过以下代码得到这个:

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

【问题讨论】:

  • 当你注销时,你在设置什么作为rootviewcontroller
  • 您应该在登录后更改rootviewcontroller。
  • 您需要显示导致崩溃的代码和错误日志。没有这些,我们真的无能为力。
  • @mitul 你能告诉我如何更改根视图控制器。谢谢大家回复
  • 代码应该出现在您的问题中。不在评论中。显示的错误信息是什么?

标签: ios swift


【解决方案1】:

您可以像这样更改根视图控制器:

 let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) // "Main" is storyboard name
 let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("id") as UITabBarController  
   UIApplication.sharedApplication().keyWindow?.rootViewController = viewController;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多