gpt4 book ai didi

ios - 如何在iOS中的静态库中添加xib文件

转载 作者:可可西里 更新时间:2023-11-01 03:40:01 26 4
gpt4 key购买 nike

我正在尝试在静态库中添加 xib 文件或任何其他 View Controller 文件,但我无法这样做。你能帮帮我吗?

如果可能,请添加完整的源代码

他们是第一个 View 中的按钮。当点击那个按钮时,新的 View Controller 会出现一些东西(比如背景颜色的变化)。如何为此创建静态库?以便我可以在另一个项目中使用它?

提前致谢

最佳答案

如果您想在构建静态库时使用界面构建器构建您的界面,您需要制作一个包并将其与您的库一起分发。

在 Xcode 中:

  1. 文件>新建>目标
  2. 从 OS X Framework and Library 部分选择“Bundle”
  3. 填写详细信息。捆绑框架应该是核心基础。

然后您需要在编译框架的同时编译您的包。将 bundle 添加到框架的“目标依赖项”构建阶段。

当你制作你的 xibs 时,你将他们的目标设为你创建的这个新包。

然后,当您在派生数据目录中编译您的框架时,您会在您的框架二进制文件旁边找到您编译的包。您将其与框架二进制文件一起提供给您的第三方。

那么如何在代码中引用这个包呢?在 iOS 中, bundle 无法加载,您的 bundle 实际上将位于第三方的 iOS 应用程序主 bundle 中。您可以在 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;
}

然后您可以在代码中访问您的包以像这样加载 xibs:

UIViewController * controller = [[UIViewController alloc] initWithNibName:nil bundle:[NSBundle myBundle]];

请记住,如果您在框架代码中使用类别,则需要确保您的框架使用者添加 -ObjC(或 -all_load,如果不使用最近的Xcode)“其他链接器标志”到他们的项目

关于ios - 如何在iOS中的静态库中添加xib文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17571366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com