Vol*_*ort 8 xcode objective-c ios
我一直在按照本指南创建一个iOS静态库:https://github.com/jverkoey/iOS-Framework#walkthrough.我设法创建了一个可以导入另一个Xcode项目的框架.
现在,我希望我的框架能够显示故事板.我想这个.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];
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎不起作用(它找不到storyboard文件).我想这是因为它.storyboard目前没有包含在框架中.可悲的是,我不知道如何包含它.
在框架的Xcode项目中,在Build Phases下,我看到一个标签为"Copy files"的标签,看起来就像我需要的那样.
现在,我不确定这是做什么的,但无论如何,它似乎并没有起作用.
我也这样做了:
如何.storyboard在不使用单独的捆绑包的情况下将我的文件包含在框架中?
And*_*rey -4
为什么不想为框架使用单独的包?因此,如果应用程序正在使用您的框架,它将能够使用其中的资源(Xibs、故事板等)
例如,来自使用您的框架的应用程序的调用可能如下所示:
FrameworkViewController *frameworkView = [[FrameworkViewController alloc] initWithNibName:@"FrameworkViewController"
bundle:[NSBundle yourFrameworkBundle]];
Run Code Online (Sandbox Code Playgroud)
在你的框架中,你可以编写一个辅助类 NSBundle+YourFrameworkBundle 来访问框架包:
NSBundle+YourFrameworkBundle.h
@interface NSBundle (YourFrameworkBundle)
+ (NSBundle *)yourFrameworkBundle;
@end
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
要捆绑框架的资源,请创建一个单独的目标,您可以在其中链接所有资源。

| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |