繁体   English   中英

使用资源包文件中的Storyboard

[英]Use Storyboard from Resource Bundle File

我创建了一个包文件并将包文件导入到我的项目中。 这个捆绑文件中有一个故事板,我想从这个故事板创建视图。 我一直试图找出正确的方法来做这2天,但没有运气。 它始终显示“'无法在捆绑NSBundle中找到名为'StoryboardA'的故事板”错误。 我在这里有一个示例项目: https//github.com/tsunglintsai/Storyboard-In-Resource-Bundle

以下是我试过的代码。

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

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"StoryboardA" bundle:resourceBundle];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];

- 我无法从以下类似问题的帖子中找到答案:

如何从IOS应用程序中的自定义捆绑加载故事板文件?

Xcode Copy Bundle Resources无法找到文件

“无法在捆绑NSBundle中找到名为'MainStoryboard'的故事板”

您需要创建一个合适的包,而不仅仅是重命名扩展名为.bundle的目录。

您的资源(如故事板)需要位于Contents/Resources/子目录中,并且您还需要Contents/目录中的Info.plist

您可以通过创建新目标并从OS X> Framework&Library中选择Bundle来生成基本模板。 然后将其存档并查看存档。

可能有一种更简化的方式来实现目标依赖,但对我来说,如何使Xcode使用普通的构建命令构建捆绑包并不明显,它似乎只能用于归档。

有关更多信息,请参阅Apple捆绑编程指南中的装入分发包

如果您使用loadAndReturnError:而不是只是load ,您会收到以下错误消息:

Error Domain = NSCocoaErrorDomain Code = 4“无法加载bundle”bundlefilename.bundle“,因为无法找到它的可执行文件。” UserInfo = 0xb8c8720 {NSLocalizedRecoverySuggestion =尝试重新安装捆绑包。,NSLocalizedFailureReason =无法找到捆绑包的可执行文件。,NSLocalizedDescription =无法加载捆绑包“bundlefilename.bundle”,因为无法找到其可执行文件。,NSBundlePath = / Users / user1 / Library / Application Support / iPhone Simulator / 7.0.3 / Applications / 2952FC15-F092-4F04-9BD3-902A923BC692 / StoryboardInBundle.app / bundlefilename.bundle}

所以你的软件包似乎有问题(虽然我没有任何加载软件包的经验)。

如果您的对象是使用该包中包含的故事板和图像,您可以在查找器中打开该包,单击“显示包内容”,然后将这两个文件拖到您的项目中。 然后您不需要加载包,它可以从项目中删除。

暂无
暂无

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

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