我正试图推送一个新的视图控制器,但第一行出现此错误消息而崩溃
EXC_BAD_指令(代码=EXC_I386_INVOP,子代码=0x0)
我已经对类名和故事板id进行了两次三重检查,它们都是正确的。不知道是什么问题。

func showUsers() {
  let vc = self.storyboard?.instantiateViewController(withIdentifier: "group") as! GroupViewController
  self.navigationController?.pushViewController(vc, animated: true)
}

最佳答案

你能检查一下你的vc是否为零吗?
您有可选的storyboard和forceas,在您按下vc之前可能会出现一些问题。它可以是nil,也可以不是GroupViewController实例。
你可以从这样开始:

if let vc = self.storyboard?.instantiateViewController(withIdentifier: "group") as? GroupViewController {
    self.navigationController?.pushViewController(vc, animated: true)
}

看看你是否真的得到了非零。
编辑:根据你的评论-似乎你确实在某个时候得到了vc。那你就要查清楚具体在哪里。你的nil是非零的吗?
你能实例化你的视图控制器吗?method docs
如果在故事板文件中不存在指定的标识符(或是NIL),则此方法引发异常。
我建议通过将实例化分为不同的步骤进行调试,并按如下方式检查每个步骤:
if let storyboard = self.storyboard {
    let vc = storyboard.instantiateViewController(withIdentifier: "group")
    if let groupVC = vc as? GroupViewController {
        self.navigationController?.pushViewController(groupVC, animated: true)
    }
}

关于ios - 为什么实例化 View Controller 时应用崩溃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44648023/

10-10 18:33
查看更多