【问题标题】:Why is the app crashing when instantiating view controller?为什么实例化视图控制器时应用程序崩溃?
【发布时间】:2017-11-22 16:48:45
【问题描述】:

我正在尝试推送一个新的视图控制器,但在第一行崩溃并显示此错误消息

EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

我已经两次检查了类名和情节提要 ID,它们是正确的。不知道是什么问题。

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

【问题讨论】:

  • 控制台中有消息吗?
  • @Larme 控制台中没有消息。
  • 在你的故事板 Groupviewcontroller 有按组识别?
  • 是的@HimanshuMoradiya
  • 是否有任何 IBOutlet 未连接但您正在尝试设置值?

标签: ios swift


【解决方案1】:

你能检查你的vc 不为零吗?

您有可选的storyboard 和强制as,在您推送vc 之前可能会出现一些问题。可以是nil,也可以不是GroupViewController 实例。

您可以先尝试以下方法:

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

看看你是否真的得到非零vc

编辑:根据您的评论 - 似乎您在某些时候确实收到了 nil。然后你需要检查确切的位置。你的self.storyboard 不是零吗?

你能实例化你的视图控制器吗? method docs

如果指定的标识符在情节提要文件中不存在(或为零),则此方法引发异常。

我建议通过将您的实例化分解为单独的步骤来进行调试,并像这样检查每个步骤:

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

【讨论】:

  • 是的,它在if let storyboard = self.storyboard 失败了。现在工作正常:)
【解决方案2】:

请检查以下给定点:-

1) 请检查 GroupViewController 是否位于同一故事板中

2) 调试代码并检查 vc 对象不应为 nil。

3) 请检查特定情节提要中 GroupViewController 的 group 标识符。

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 2012-06-10
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多