gpt4 book ai didi

iOS - 从文档目录中的包加载 xib

转载 作者:可可西里 更新时间:2023-11-01 03:09:43 24 4
gpt4 key购买 nike

我一直致力于通过 bundle xib 和下载包,并在这些包中加载 xib,让“自定义可换肤”界面适用于我的 iOS 应用程序。

我已按照此处非常有用的说明进行操作,使其几乎可以正常工作。

loading NSBundle files on iOS

我已经下载并解压缩了包,可以看到 xib 文件。我没有在示例中使用任何 TestViewController 代码,而是在使用刚刚下载的 xib 创建 View Controller 时这样做:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"gg.bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:filePath];

if ( !bundle )
{
NSLog(@"Error getting bundle");
}

MyViewController *vc = [MyViewController new];
[vc initWithNibName:@"CustomDownloadedXib" bundle:bundle];

当我将这个 View Controller 推送到我的堆栈时,我得到了这个错误:

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在 bundle 中加载 NIB:名称为“CustomDownloadedXib”的“NSBundle(尚未加载)”

问题似乎是我的包“尚未加载”。我尝试通过调用强制加载我的包:

[bundle load]

但这并没有帮助。

我这里的方法不正确吗?这似乎是一种直观的方法。

提前致谢!

最佳答案

首先,如果一个包没有正确创建,它就不会被加载。因此,为了创建一个合适的包,下面是创建包的步骤:

  1. 通过在 OS X -> Framework & Libraries 下选择名为 bundle 的模板来添加新目标。

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

  3. 在 Build Phrases -> Copy Bundle Resources 中添加 .xibs、图像或其他您想使用的资源。

  4. 在 Build Phrases -> Link binary with Libraries 中添加 CoreFoundation 框架。

  5. 编译目标选择iOS Device。

  6. 将新创建的包从 Products 目录保存到某个地方。

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

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

您现在已设置好新 bundle 。

关于iOS - 从文档目录中的包加载 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com