【问题标题】:How to catch nil on "instantiateViewControllerWithIdentifier"如何在“instantiateViewControllerWithIdentifier”上捕获 nil
【发布时间】:2015-02-20 02:02:00
【问题描述】:

我经常在我的项目中发现我可能需要通过 Storyboard ID/Restoration ID 来启动 UIViewController;但是,我经常通过查询包含与标题关联的 ID 的字典来获取 ID,并且可能某些 ID 实际上不是有效/创建的,但会导致引发异常。有没有办法在不引发异常的情况下确定 ID 不存在?我用简单的“if-then”逻辑尝试了这个,但没有成功。这是我得到的。

var VC: UIViewController? = self.storyboard?.instantiateViewControllerWithIdentifier(masterViewList["ExampleView"]!) as UIViewController?
        if VC == nil {
            //NOT FOUND
            alert.title = "Unable to Find UIViewController"
            alert.message = "The Selected View is unavailable!"
            alert.addButtonWithTitle("Dismiss")
        }
        else {
            self.navigationController?.pushViewController(VC!, animated: true)
        }

Apple 的文档明确指出,当“instantiateViewControllerWithIdentifier”失败时,它会引发异常,所以我知道为什么上面的代码不起作用,我只是不知道是否有办法解决它,或者我是否只能活下去它会引发异常。

【问题讨论】:

    标签: uiviewcontroller uinavigationcontroller uistoryboard


    【解决方案1】:

    Apple 的文档确实说该方法会引发异常,但方法签名:

    open func instantiateViewController(withIdentifier identifier: String) -> UIViewController
    

    另有说法。显然他们的意思是 UIKit 将引发一个终止应用程序的异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多