繁体   English   中英

从我自己的捆绑包中装入笔尖?

[英]Loading nib from my own bundle?

我试图将NIB / XIB文件放在一个称为Configuration.bundle的捆绑包中。 当我尝试从我的捆绑软件加载xib时,应用崩溃,因为它找不到xib文件。

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle]
pathForResource:@"Configuration" ofType:@"bundle"]];
[bundle load];
NSLog(@"bundle: %@", bundle);

我得到了输出

捆绑软件:NSBundle(尚未加载)

“尚未加载”部分使我有些害怕。 为什么不加载?

最后,当我尝试使用视图控制器加载笔尖时

ConfigViewController *configViewController = [[ConfigViewController alloc] initWithNibName:@"ConfigViewController" bundle:bundle];

我得到了输出

*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在名称为'ConfigViewController.xib'的捆绑软件:'NSBundle(尚未加载)中加载NIB'

我已经尝试了有和没有.xib的情况。

有任何想法吗?

load方法用于加载诸如框架之类的可执行代码。
您的捆绑软件不包含任何您要加载的可执行文件,因此您不会轻易调用[bundle load]
如果bundle ir的名称正确,那么除[bundle load]之外,您所编写的所有内容都可以。请始终检查路径是否正确,不要过多地嵌套指令:

NSString* path=[ [NSBundle mainBundle] pathForResource: @"Configuration" ofType: @"bundle"];

如果此字符串是正确的路径,那么您可以确保无需调用[bundle load]即可正确加载捆绑软件

首先,如果未正确创建捆绑包,则不会加载该捆绑包。 因此,为了在下面创建适当的捆绑包,创建捆绑包的步骤如下:
1.在OS X-> Framework&Libraries下选择一个名为bundle的模板,添加一个新目标。

  1. 选择新创建的目标并将BaseSDK从OSX更改为Latest iOS。

  2. 在构建短语->复制捆绑资源中,从捆绑中添加要使用的.xib,图像或其他资源。

  3. 在构建短语->将二进制文件与库链接中添加CoreFoundation框架。

  4. 选择iOS设备编译目标。

  5. 将新创建的捆绑包从“产品”目录保存到某个位置。

现在,将该捆绑包复制到您的主项目中。 使用以下代码加载捆绑包:

NSString *path = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];

NSBundle *bundle = [NSBundle bundleWithPath:path];"

现在,您已设置好新捆绑包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM