如何在“ instantiateViewControllerWithIdentifier”上捕获nil

问题描述 投票:3回答:1

我经常在我的项目中发现可能需要通过Storyboard ID / Restoration ID来启动UIViewController;但是,我经常通过查询包含与标题相关联的ID的Dictionary来获得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个回答
0
投票

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

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

否则。显然,它们的意思是UIKit将引发一个终止应用程序的异常。

© www.soinside.com 2019 - 2024. All rights reserved.