呈现其视图控制器时 Nib 加载失败

Nib load failure when presenting its view controller

我在继承自 NSObject 的 class 中有这个函数:

open func showCustomDialogInView(vc: UIViewController) {
    let bundle = Bundle(for: CustomDialogViewController.self)
    let customDialog = CustomDialogViewController(nibName: "CustomDialogViewController", bundle: bundle)
    customDialog.delegate = vc
    customDialog.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    vc.present(customDialog, animated: true, completion: nil)
}

在更新到 Xcode 8Swift 3 语言之前,我在我的一个 iOS 项目中使用了这个,但是现在当我 运行 应用程序时,我遇到了崩溃当到达 vc.present(customDialog, animated: true, completion: nil) 行时。我在日志控制台中收到此消息:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle /MyApp.app> (loaded)' with name 'CustomDialogViewController''

我不明白发生了什么,因为 let customDialog = CustomDialogViewController(nibName: "CustomDialogViewController", bundle: bundle) 行没有崩溃,而且我似乎得到了一个 CustomDialogViewController 对象。

有人可以帮我解决这个问题吗?谢谢

当您在 XCode 之外重命名文件时,可能会发生此错误。要解决它,您只需从项目中删除文件(右键单击 - 删除并 "Remove Reference")。

然后你可以在你的项目中重新导入文件,一切就OK了。

在这种情况下,这个错误似乎是因为 xib 文件缺少适当的目标成员身份。

感谢您的回答