现在,我希望我的框架能够显示故事板.我想.storyboard文件算作资源.前面的指南指出我应该为我的资源文件创建一个Bundle,比如图像,而不是将它们放在框架本身.
但是,我确实希望将它们放在框架中.我不想使用单独的捆绑包.
我找到的所有指南都告诉我同样的事情.我理解使用单独的捆绑包的优点,但我现在不想这样做.
现在,我迷失了如何在我的框架中包含我的.storyboard文件,以便我可以用它来显示它:
UIStoryboard *sb = [UIStoryboard storyboarDWithname:@"nameOfStoryboard" bundle:[NSBundle bundleForClass:[self class]]];UIVIEwController *vc = [sb instantiateVIEwControllerWithIDentifIEr:@"nameOfVIEwController"];[otherVIEw presentVIEwController:vc animated:YES completion:NulL];
上面的代码似乎不起作用(它找不到storyboard文件).我想这是因为.storyboard目前不包含在框架中.可悲的是,我不知道如何包含它.
在框架的Xcode项目中,在Build Phases下,我看到一个标签为“copy files”的标签,看起来就像我需要的那样.
现在,我不确定这是做什么的,但无论如何,它似乎并没有起作用.
我也这样做了:
如何在不使用单独的捆绑包的情况下在我的框架中包含我的.storyboard文件?
解决方法 为什么不想为框架使用单独的bundle?因此,如果一个应用程序正在使用您的框架,它将能够使用它的资源(Xibs,故事板,等等)例如,来自使用您的框架的应用程序的调用可能如下所示:
FrameworkVIEwController *frameworkVIEw = [[FrameworkVIEwController alloc] initWithNibname:@"FrameworkVIEwController" bundle:[NSBundle yourFrameworkBundle]];
在你的框架中,你可以编写一个帮助类NSBundle YourFrameworkBundle,它可以访问框架包:
NSBundle YourFrameworkBundle.h
@interface NSBundle (YourFrameworkBundle)+ (NSBundle *)yourFrameworkBundle;@end
NSBundle YourFrameworkBundle.m
#import "NSBundle+YourFrameworkBundle.h"@implementation NSBundle (YourFrameworkBundle)+ (NSBundle *)yourFrameworkBundle{static NSBundle *frameworkBundle = nil;static dispatch_once_t predicate;dispatch_once(&predicate,^{ Nsstring *mainBundlePath = [[NSBundle mainBundle] resourcePath]; frameworkBundle = [NSBundle bundleWithPath:[mainBundlePath stringByAppendingPathComponent:@"YourFrameworkBundle.bundle"]];});return frameworkBundle;}@end
要为框架捆绑资源,请创建一个单独的目标,您可以在其中链接所有资源.
以上是内存溢出为你收集整理的ios – 如何在不使用单独的捆绑包的情况下将我的资源文件包含在框架中?全部内容,希望文章能够帮你解决ios – 如何在不使用单独的捆绑包的情况下将我的资源文件包含在框架中?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)