gpt4 book ai didi

ios - 将 .xib 文件放在框架项目中的什么位置?

转载 作者:技术小花猫 更新时间:2023-10-29 11:02:57 26 4
gpt4 key购买 nike

我花了半天时间来解决这个问题,但我在网上看不到直接的解决方案。

我创建了一个 iOS CocoaTouch 框架。我有一些私有(private)和公共(public)类(class),一切正常。问题 是当我在该框架内添加 .xib 文件

在我的框架中,我想实例化 .xib 文件,我得到的错误是:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/dino/Library/Developer/CoreSimulator/Devices/FEDECDC2-D4EA-441E-B53B-329A5B3DFB7A/data/Containers/Bundle/Application/78CEC01F-4C36-4143-A7D6-DDE6CCAC801B/MyApp.app> (loaded)' with name 'NUInAppMessageView''

我听说 .xib 文件不能包含在静态库中,但我认为它们应该能够在框架中使用。

我的框架目标包含之前的“Copy Bundle Resources”,这个 .xib 文件是我在框架项目中创建它时自动添加的。

enter image description here

我在一些地方读到资源应该添加到一个单独的 .bundle 目标中,但是在创建新目标时没有“bundle”选项,我相信这是旧的静态-图书馆日。

这是我用来初始化 View 的代码(在框架内):

NSBundle * frameworkBundle = [NSBundle bundleForClass:[self class]]; // fine (not nil)

NUInAppMessageView *view = [[frameworkBundle loadNibNamed:@"NUInAppMessageView" owner:self options:nil] firstObject]; // <-- CRASH

我试图将其分解为更多的方法调用,并认为 Nib 本身正在创建:

UINib *nib = [UINib nibWithNibName:@"NUInAppMessageView"
bundle:frameworkBundle]; // fine (not nil)
NSArray *objects = [nib instantiateWithOwner:self options:nil]; // <-- CRASH

我没有想法了。我尝试使用 Clean 项目删除派生数据,但它们似乎无法完成这项工作。

我是不是漏掉了什么?

最佳答案

在 iOS 项目的框架中将 Nib 文件放在哪里?

我的回答背景:
我试图导出一些与 UITableView 相关的实现,它包含 UITableViewCell .xib 文件。最后它们变成了 .nib 文件! ;-) 我指的是那些 Nib 文件,如下所示:

[[NSBundle mainBundle] loadNibNamed:customCellID owner:nil options:nil];

解释:
但是这里我做错的是,我构建了一个静态 Cocoa Touch Framework 并尝试在另一个应用程序中使用它。那么在运行时什么会成为 MainBundle?绝对是我的 UITableView 实现试图在应用程序的主包中找出 customCellID 的 Nib 文件。

答案:
所以我改变了我的 UITableView 实现的上面的代码片段如下:

    NSString *frameworkBundleId = @"com.randika.MyFrameworkBundleIDHere";
NSBundle *resourcesBundle = [NSBundle bundleWithIdentifier:frameworkBundleId];

customCell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:customCellID];
if (customCell == nil) {
NSArray *nibs = [resourcesBundle loadNibNamed:emptyCellID owner:nil options:nil];
customCell = [nibs objectAtIndex:0];
}

而且我从 UITableView 实现构建的框架再也没有出现上述错误! :-)

希望这个回答对外面的人有帮助!

干杯! :-)

关于ios - 将 .xib 文件放在框架项目中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942816/

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