我已经按照这里非常有用的说明来使它几乎正常工作.
loading NSBundle files on iOS
我有捆绑下载,解压缩,可以看到xib文件.我没有在示例中使用任何TestVIEwController代码,但是在使用刚刚下载的xib创建视图控制器时这样做:
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];
当我将此视图控制器推送到我的堆栈时,我收到此错误:
***由于未捕获的异常’NSInternalinconsistencyException’而终止应用程序,原因:’无法在bundle中加载NIB:’NSBundle(尚未加载)’,名称为’CustomDownloadedXib”
问题似乎是我的包“尚未加载”.我尝试通过调用强制我的包加载:
[bundle load]
但这没有用.
我的方法不正确吗?这似乎是直观的方式.
提前致谢!
解决方法 首先,如果没有正确创建一个包,它将不会被加载.因此,为了创建一个合适的包,下面是创建一个包的步骤:>通过在OS X下选择名为bundle的模板添加新目标 – >框架&库.
>选择新创建的目标并将BaseSDK从OSX更改为最新iOS.
>在Build Phrases中添加要从捆绑中使用它的.xibs,图像或其他资源 – >复制捆绑资源.
>在Build Phrases中添加CoreFoundation框架 – >链接二进制文件与库.
>编译选择iOS设备的目标.
>将新创建的捆绑包从Products目录保存到某个位置.
现在将该包复制到您的主项目中.使用以下代码加载包:
Nsstring *path = [[NSBundle mainBundle] pathForResource:@"Bundlename" ofType:@"bundle"];NSBundle *bundle = [NSBundle bundleWithPath:path];"
您现在使用新捆绑包进行设置.
总结以上是内存溢出为你收集整理的iOS – 从Documents目录中的bundle加载xib全部内容,希望文章能够帮你解决iOS – 从Documents目录中的bundle加载xib所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)