我正试图推送一个新的视图控制器,但第一行出现此错误消息而崩溃
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/