在iOS 8上呈现NIB模式崩溃但在iOS 9+上没有

时间:2016-11-29 08:17:13

标签: swift xcode crash nib

我创建了一个名为SomeViewController的NIB,并且所有相应的代码都是正确的,并且所有视图都正确绑定,但不知何故代码self.presentViewController(SomeViewController(), animated: true, completion: nil)导致崩溃:

  

致命错误:在解包可选值时意外发现nil

有什么问题?

1 个答案:

答案 0 :(得分:2)

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

    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)