ios – 如何在不使用单独的捆绑包的情况下将我的资源文件包含在框架中?

前端之家收集整理的这篇文章主要介绍了ios – 如何在不使用单独的捆绑包的情况下将我的资源文件包含在框架中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在按照本指南创建一个iOS静态库: https://github.com/jverkoey/iOS-Framework#walkthrough.我设法创建了一个可以导入另一个Xcode项目的框架.

现在,我希望我的框架能够显示故事板.我想.storyboard文件算作资源.前面的指南指出我应该为我的资源文件创建一个Bundle,比如图像,而不是将它们放在框架本身.

但是,我确实希望将它们放在框架中.我不想使用单独的捆绑包.

我找到的所有指南都告诉我同样的事情.我理解使用单独的捆绑包的优点,但我现在不想这样做.

现在,我迷失了如何在我的框架中包含我的.storyboard文件,以便我可以用它来显示它:

  1. UIStoryboard *sb = [UIStoryboard storyboardWithName:@"NameOfStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
  2. UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"NameOfViewController"];
  3. [otherView presentViewController:vc animated:YES completion:NULL];

上面的代码似乎不起作用(它找不到storyboard文件).我想这是因为.storyboard目前不包含在框架中.可悲的是,我不知道如何包含它.

在框架的Xcode项目中,在Build Phases下,我看到一个标签为“Copy files”的标签,看起来就像我需要的那样.

现在,我不确定这是做什么的,但无论如何,它似乎并没有起作用.

我也这样做了:

如何在不使用单独的捆绑包的情况下在我的框架中包含我的.storyboard文件

解决方法

为什么不想为框架使用单独的bundle?因此,如果一个应用程序正在使用您的框架,它将能够使用它的资源(Xibs,故事板,等等)

例如,来自使用您的框架的应用程序的调用可能如下所示:

  1. FrameworkViewController *frameworkView = [[FrameworkViewController alloc] initWithNibName:@"FrameworkViewController"
  2. bundle:[NSBundle yourFrameworkBundle]];

在你的框架中,你可以编写一个帮助类NSBundle YourFrameworkBundle,它可以访问框架包:

NSBundle YourFrameworkBundle.h

  1. @interface NSBundle (YourFrameworkBundle)
  2.  
  3. + (NSBundle *)yourFrameworkBundle;
  4.  
  5. @end

NSBundle YourFrameworkBundle.m

  1. #import "NSBundle+YourFrameworkBundle.h"
  2.  
  3. @implementation NSBundle (YourFrameworkBundle)
  4.  
  5. + (NSBundle *)yourFrameworkBundle
  6. {
  7. static NSBundle *frameworkBundle = nil;
  8. static dispatch_once_t predicate;
  9.  
  10. dispatch_once(&predicate,^{
  11. NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath];
  12. frameworkBundle = [NSBundle bundleWithPath:[mainBundlePath stringByAppendingPathComponent:@"YourFrameworkBundle.bundle"]];
  13. });
  14.  
  15. return frameworkBundle;
  16. }
  17.  
  18. @end

要为框架捆绑资源,请创建一个单独的目标,您可以在其中链接所有资源.

猜你在找的iOS相关文章