[英]how to add xib file in static library in iOS
我试图在静态库中添加xib文件或任何其他视图控制器文件,但我不能这样做。 你能帮我么?
如果可能请添加完整的源代码
他们是第一个视图上的按钮。 当点击该按钮时,新的视图控制器会出现一些东西(比如改变背景颜色)。 如何为此创建静态库? 这样我可以在另一个项目中使用它?
提前致谢
如果要在构建静态库时使用接口构建器构建接口,则需要创建一个包并将其与库一起分发。
在Xcode中:
然后,您需要在框架的同时编译捆绑包。 将包添加到框架的“Target Dependencies”构建阶段。
当你制作你的xib时,你就会创建你创建的新包。
然后,当您在派生数据目录中编译框架时,在框架二进制文件旁边,您将找到已编译的包。 您将此与框架二进制文件一起提供给您的第三方。
那么如何在代码中引用此包呢? 在iOS捆绑包中无法加载,您的捆绑包实际上将在第三方的iOS应用程序主捆绑包内。 您可以在NSBundle上创建一个类别,以便从代码中方便地访问您的包:
@interface NSBundle (mybundle)
+(NSBundle *)myBundle;
@end
@implementation NSBundle (mybundle)
static NSBundle * _myBundle;
+(NSBundle *)myBundle{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSBundle * mainBundle = [NSBundle mainBundle];
NSString * pathToMyBundle = [mainBundle pathForResource:@"myBundle" ofType:@"bundle"];
NSAssert(pathToMyBundle, @"bundle not found", nil);
_myBundle = [NSBundle bundleWithPath:pathToMyBundle];
});
return _myBundle;
}
然后,您可以在代码中访问您的包以加载xib,如下所示:
UIViewController * controller = [[UIViewController alloc] initWithNibName:nil bundle:[NSBundle myBundle]];
请记住,如果在框架代码中使用类别,则需要确保框架使用者将-all_load
(或-all_load
如果不使用最新的Xcode) -ObjC
到其项目中的“其他链接器标志”
严格来说,无法将Xib添加到静态库是正确的。 但是,有一些解决方法。 Matt Galloway的iOS Library With Resources教程将向您展示如何做到这一点。
请参阅iOS资源库 。
XIB就像资源和静态库一样,是一个包含ur类的编译文件。 您可以说这是您准备好使用的已编译代码。 您无法将xib添加到静态库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.