创build一个自定义的cocoa豆荚与故事板

我正在创build一个吊舱,在资源包中有一个故事板(本地化)。

当我尝试实例化故事板时,发生错误: Could not find a storyboard named 'MyStoryboard' in bundle NSBundle 。 代码如下所示:

 NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"MyBundle" withExtension:@"bundle"]; NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:bundle]; 

MyBundle结构如下所示:

 - MyBundle.bundle - Base.lproj - MyStoryboard.storyboard - es.lproj - MyStoryboard.strings 

故事板可以包含在一个捆绑首先?

我还没有看到包括故事板的Pod的例子。 如果你知道任何分享他们的故事板的豆荚,让我知道。

有两件事要记住。

  1. 您可以通过预定义的软件包来添加您的Pod资源

     s.resources = ["Resources/Pod.bundle"] 

在这种情况下,你的包的内容将被复制到你的xcode项目中,而不需要任何“进一步处理”。 这意味着storyboard或xib文件将不会被编译,并且不会在您的项目中可用。

  1. 你可以明确提到你的storyboard / nib文件

     s.resources = ["Resources/**/*.storyboard"] 

在这种情况下,故事板将被编译并将在您的项目中可用。 (本文写作时)的缺点是你不能使用本地化的故事板,因为所有的故事板将在你的包的根目录下被处理和复制。 因此,不同的.lproj文件夹中具有相同名称的故事板将被覆盖。

你想要的resources选项。 这里有一些规格,包括他们的:

 JCAutocompletingSearch/0.9.2/JCAutocompletingSearch.podspec JCAutocompletingSearch/0.9.3/JCAutocompletingSearch.podspec JCAutocompletingSearch/0.9.4/JCAutocompletingSearch.podspec JCAutocompletingSearch/0.9.5/JCAutocompletingSearch.podspec JCAutocompletingSearch/0.9.6/JCAutocompletingSearch.podspec Keystone-Contacts-iOS/1.1.4/Keystone-Contacts-iOS.podspec LumberjackConsole/2.0.0/LumberjackConsole.podspec LumberjackConsole/2.0.1/LumberjackConsole.podspec Mixpanel/2.1.0/Mixpanel.podspec Mixpanel/2.2.0/Mixpanel.podspec Mixpanel/2.2.1/Mixpanel.podspec Mixpanel/2.2.2/Mixpanel.podspec Mixpanel/2.2.3/Mixpanel.podspec Mixpanel/2.3.0/Mixpanel.podspec Mixpanel/2.3.1/Mixpanel.podspec Mixpanel/2.3.2/Mixpanel.podspec Mixpanel/2.3.4/Mixpanel.podspec Mixpanel/2.3.5/Mixpanel.podspec OpenBLE/1.0.0/OpenBLE.podspec 

我目前在这里有相同的问题。 虽然没有回答这个问题本身,我想提供更多的信息,最有可能在你的情况是有效的:

调用

 NSString *path = [bundle pathForResource:@"MyStoryboard" ofType:@"storyboard"]; NSLog(@"path: %@",path); 

将打印

 /var/mobile/Containers/Bundle/Application/_identifier_/MyApp.app/MyBundle.bundle/Base.lproj/MyStoryboard.storyboard 

即故事板本身被find,但不能装载“正常的方式”。

我解决了我的问题,通过使用这一行代码来获得捆绑

 let bundle = Bundle(for: type(of: self))