【问题标题】:Unable to instantiate UIStoryboard(name: "something", bundle: nil)无法实例化 UIStoryboard(名称:“某事”,捆绑:无)
【发布时间】:2017-05-31 18:46:46
【问题描述】:

每次我尝试实例化 UIStoryboard 时都会遇到致命的运行时崩溃。
这是异常中断结果的屏幕截图:

但是,如果我仅使用以下命令实例化 UIStoryboard 类,不会出现运行时崩溃UIStoryboard();没有任何参数。

我将此代码放在 VC 的 ViewDidLoad() 中进行测试,但我仍然遇到运行时崩溃。

每次发生这种致命事故的原因是什么?


这是代码:
 open override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let myBundle = Bundle.main

        UIStoryboard(name: "Hamburger", bundle:myBundle)
      //   let storyboard: UIStoryboard? = UIStoryboard(name: "Hamburger", bundle: nil)

        if viewDidAppearFirstTime {
            viewDidAppearFirstTime = false
            configureAttributesViewer()
        }
    }

【问题讨论】:

  • 你为什么尝试使用 UIStoryboard(name: "Hamburger", bundle:myBundle) 这一行?
  • UIStoryboard(...) 崩溃了。我对结果不感兴趣,只是想看看 UIStoryboard 是否会运行而不会崩溃。

标签: swift3 crash xcode8 uistoryboard


【解决方案1】:

我尝试了一个您想要的示例,当我运行该应用程序时它运行良好,它也没有显示任何错误。请找到以下步骤。

let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let Hamburger = storyBoard.instantiateViewController(withIdentifier: "Hamburger")
self.navigationController?.pushViewController(Hamburger, animated:true)

【讨论】:

  • 如果 'Hamburger' VC 在'Main' 故事板中,则运行时有效。但是,如果“Main”不存在或 VC 不存在,它就会爆炸。我正在为我的项目扩展它作为一种可能的补救措施。
  • 这里的底线是“故事板”必须存在,否则会崩溃。我的问题是我确实有故事板,但显然它没有被识别。也许 xcode 正在检查框架与本地;并且没有找到故事板。我认为问题在于 Xcode 的搜索模式。
【解决方案2】:

解决方案:使用了错误的捆绑包名称。 故事板位于不同的捆绑包中。

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 2020-07-10
    • 2012-03-28
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2014-04-07
    • 2014-07-28
    相关资源
    最近更新 更多