在 HalfSizePresentationController 类中解包时意外发现 nil



我试图在另一个大小为半父视图控制器的视图控制器上实现呈现模态视图控制器。

呈现半尺寸的模态视图控制器

当我运行时,此错误显示:

致命错误:解开可选值时意外发现 nil(分行)

代码问题 ?

func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
    return HalfSizePresentationController(presentedViewController: presented, presentingViewController: presentingViewController!)
}

通常,在你得到unexpectedly found nil...的情况下,罪魁祸首是你试图用它强制解开包装的东西!

在您的情况下,唯一带有 ! 的东西是presentingViewController,所以这可能是开始寻找的好地方。

if let presenting = presenting {
    return HalfSizePresentationController(presentedViewController: presented, presentingViewController: presenting!)
}

实际上,当我开始仔细研究您的代码时,请查看您的签名:

func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController?

您有一个presentingViewController外部参数名称,但内部参数名称是 presenting ,但是您在使用参数时尝试使用 presentingViewController 而不是 presenting

return HalfSizePresentationController(presentedViewController: presented, presentingViewController: presentingViewController!)

应该是:

return HalfSizePresentationController(presentedViewController: presented, presentingViewController: presenting!)

希望有帮助

最新更新