关于ios:Xib静态库文件

Xib file on static library

我要接管一个我还没有开始的项目,但我仍然是大三,所以我需要一些帮助来澄清我的想法。
我正在为iOS 7.0及更高版本开发一个库。
然后将该库通过可可足类分发。

我已经构建了一个自定义视图以及如何包含一个包含它的.xib文件。
它在我的开发应用程序中完美运行(因为我直接使用了代码),但是当我在暂存应用程序(通过本地pod加载库)中对其进行测试时,我得到了

1
NSInternalInconsistencyException Could not load NIB in bundle: 'NSBundle </Users/Jack/Library/Developer/CoreSimulator/Devices/899B54FC-8A37-4182-9D89-109251B58555/data/Containers/Bundle/Application/36A3B225-AEF2-42B7-8AEC-5D930F4C4BCA/StagingApp.app> (loaded)' with name 'CheckBoxWithText''

.xib文件处于复制文件构建阶段,并且是我用来构建库的目标的一部分。

我正在像这样加载xib

1
[[NSBundle mainBundle] loadNibNamed:@"CheckBoxWithText" owner:self options:nil];

但是一旦组件加载到屏幕上,它就会崩溃。
有人说要使用您的图书馆资料包,但我不认为我的图书馆有标识符(无法在信息中看到它)。
我尝试使用

1
[[NSBundle bundleWithIdentifier:@"com.company.project"] loadNibNamed:@"CheckBoxWithText" owner:self options:nil];

,但不加载任何内容。

我已经花了一个下午的时间阅读可能的解决方案,但是现在我脑子里很困惑。

静态库(例如我的库)不应该包含xib之类的资源,但是我正在用它包装一些图像。我在这里想念什么吗?
我已经读过一个关于一个使用budle目标实现此目标的人的教程,但是我真的不了解他是如何做到的,以及鉴于我应该使用聚合目标来构建库,我将如何使用该目标。

如果不是因为我不能在iOS7.0上使用动态框架,那么动态框架将解决该问题。

我唯一的选择是以编程方式构建布局吗?
还是我只是缺少一些东西,可以打包.xib文件?


当您在.podspec中使用resources指定.xib文件时,

CocoaPods似乎没有拾取。相反,使用resource_bundles可以正常工作。

因此.podspec将显示为:

1
s.resource_bundles = { 'CheckBoxWithText' => ['CheckBoxWithText.xib'] }

笔尖将像这样加载:

1
2
3
NSBundle* bundle = [NSBundle bundleForURL:[NSBundle.mainBundle URLForResource:@"CheckBoxWithText"
        withExtension:@"bundle"]];
NSArray* nib = [bundle loadNibNamed:@"USACheckBoxWithText" owner:self options:nil];

现在,CocoaPods中存在另一个错误,该错误阻止从resource_bundles加载资产目录。您现在应该避免使用资产目录。

请注意,如果您至少使用iOS 8并在Swift中开发Pod,这两个错误都将得到解决。