无法从主包中按名称加载 Nib 文件

Posted

技术标签:

【中文标题】无法从主包中按名称加载 Nib 文件【英文标题】:Nib files cannot be loaded by name from main bundle 【发布时间】:2011-11-03 17:11:38 【问题描述】:

似乎我的 nib 文件包含在我的测试目标中,它们不存在于主包中,因此当我从主包中按其名称加载 nib 时,我的应用程序崩溃了。我要么需要找到包含我的 nib 文件的正确包,要么需要使用路径加载 nib。

有人有解决方案吗? [NSBundle bundleForClass:[self class]] 不起作用。我认为 nib 和 class 文件不在同一个包中

【问题讨论】:

加载笔尖的代码是什么? 这里的自我对象是谁? @samfisher UIView 的子类 您是否检查了构建阶段以查看 NIB 是否被复制到您的应用程序包中? 【参考方案1】:

枚举捆绑包可能会有所帮助

for (NSBundle *bundle in [NSBundle allBundles])

    // can look for resources in bundle
    locatedPath = [bundle pathForResource:resourcePath ofType:type];

    // or maybe trying and load the nib from it?
    UINib *nib = [UINib nibWithName:@"Blah" bundle:bundle];

    // check for !nil ...

【讨论】:

谢谢,所以我发现崩溃是在 UIFont 上,因为我笔尖中的字体在 OSX 上不存在。所以这帮助我在单元测试上走得更远。 酷 - 这是我用来从我的单元测试中加载资源文件的方法。在我的例子中,我从一个假的网络服务器加载假的响应。很高兴它有帮助。

以上是关于无法从主包中按名称加载 Nib 文件的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa - 从非主包加载资源

将文件夹从主包复制到 iphone 中的文档目录

使用 webpack 为 react-lottie 从主包中排除 JSON 文件

从主包复制到应用程序支持 swift

。XIB / .NIB文件无法正确加载

仅在 iPhone 4 上无法加载名称为“MainWindow”的捆绑包 [...] 中的 NIB