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

Posted

技术标签:

【中文标题】呈现其视图控制器时笔尖加载失败【英文标题】:Nib load failure when presenting its view controller 【发布时间】:2016-10-22 15:40:10 【问题描述】:

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

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) 行时会崩溃。我在日志控制台中收到此消息:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle /MyApp.app>(已加载)”,名称为“CustomDialogViewController””

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

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

【问题讨论】:

你确定 customDialog 被实例化了吗? 你已经在标签中注明了“Xcode 8 & swift 3”,标题中也不需要了。 【参考方案1】:

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

然后你可以重新导入项目中的文件,一切都会好起来的。

【讨论】:

【参考方案2】:

在这种情况下,此错误似乎是因为 xib 文件由于某种原因缺少适当的目标成员资格。

感谢您的回答

【讨论】:

以上是关于呈现其视图控制器时笔尖加载失败的主要内容,如果未能解决你的问题,请参考以下文章

从笔尖加载的 UIView 未显示多个 UILabel

加载了笔尖但没有得到 UITableView

笔尖已装好,插座不见了

在启动时加载并呈现第二个视图控制器

UIViewController 的视图在呈现后立即改变尺寸

当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器