【问题标题】:navigationController!.pushViewController giving Fatal error: Unexpectedly found nil while unwrapping an Optional value:navigationController!.pushViewController 给出致命错误:在展开可选值时意外发现 nil:
【发布时间】:2023-03-09 01:20:02
【问题描述】:

我正在尝试从一个 Storyboard 导航到另一个 Storyboard。这是我的代码-

  let storyboard = UIStoryboard(name: "Main", bundle: nil)
                     let controller = storyboard.instantiateViewController(withIdentifier: "detail") as! detailsArticle
                     controller.jsonData = json2["post"]
                    
                    self.navigationController!.pushViewController(controller, animated: true)
            

但是,当我在单击运行上述代码的按钮后尝试导航时,出现异常错误:

致命错误:在展开可选值时意外发现 nil:文件

我该如何解决这个问题?

【问题讨论】:

  • 您在哪一行收到此错误?
  • self.navigationController!.pushViewController(controller, animated: true)

标签: swift navigationcontroller


【解决方案1】:

有 2 个地方可能会导致崩溃。

  1. detailsArticle 的标识符未设置为“详细信息”。
  2. 您尝试推送的控制器未嵌入navigationController

尝试运行并检查控制台以查看我添加的调试消息:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let controller = storyboard.instantiateViewController(withIdentifier: "detail") as? detailsArticle else { print("detail vc id not set"); return }
controller.jsonData = json2["post"]
guard let navigationController = navigationController else { print("this vc is not embedded in navigationController"); return }
navigationController.pushViewController(controller, animated: true)

从 cmets 来看,这是导致问题的第二个问题。修复它的步骤如下:

  1. 转到当前UIViewController子类所在的<StoryboardName>.storyboard,选择当前UIViewController场景。
  2. Menu bar 中选择EditorEmbedd In 并选择Navigation Controller

【讨论】:

  • 它给出的这个vc没有嵌入到navigationController中。我如何将它嵌入到navigationcontroller中?
  • 我展示的代码是用于另一个故事板 Xyz 而不是 main.storyboard。我必须在 Xyz 或 main 中嵌入导航控制器吗?
  • 但是 detailsArticle 在 main.storyboard 中
  • 你应该去当前视图控制器所在的xyz。
  • 请查收邮件
猜你喜欢
  • 2016-01-26
  • 2016-02-29
  • 2020-09-19
  • 2016-01-08
相关资源
最近更新 更多