如何捕获nil on" instantiateViewControllerWithIdentifier"

时间:2014-12-21 23:11:10

标签: uiviewcontroller uinavigationcontroller uistoryboard

我经常在我的项目中发现我可能需要通过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"失败了,它会引发一个异常,所以我知道为什么上面的代码不起作用,我只是不知道是否有办法绕过它,或者我是否只是接受它提出异常。

1 个答案:

答案 0 :(得分:0)

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

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

相反。显然,这意味着UIKit将引发一个异常,该异常将终止应用程序。