我创建了一个名称为SomeViewController的NIB,并且所有相应的代码均正确且所有 View 均已正确绑定(bind),但是以某种方式,代码self.presentViewController(SomeViewController(), animated: true, completion: nil)导致崩溃:



问题是什么?

最佳答案

要解决此问题,我们需要通过执行此操作来进行版本检查

    if #available(iOS 8, *) {
        self.presentViewController(SomeViewController(nibName: "SomeViewController", bundle: nil), animated: true, completion: nil)
    } else {
        self.presentViewController(SomeViewController(), animated: true, completion: nil)
    }

要不就
self.presentViewController(SomeViewController(nibName: "SomeViewController", bundle: nil), animated: true, completion: nil)

由于某些原因,iOS 8不会在初始化时自动将nibName包含在其对应的类中。

更新:

也可以这样做
class SomeViewController: UIViewController {
    init() {
        super.init(nibName: "SomeViewController'sNibNameHere", bundle: nil)
    }
}

// on some other part of your code
self.presentViewController(SomeViewController(), animated: true, completion: nil)

07-28 03:43