在我的项目中,我创建了一个自己的设置包(称为UIBundle),并将其拖到一些xib文件中。然后我试图从bundle加载它们,例如这个表视图单元格xib:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSArray *nib = [[self xibsBundle] loadNibNamed:@"MyCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
return cell;
}
- (NSBundle *) xibsBundle
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"UIBundle" ofType:@"bundle"];
return [NSBundle bundleWithPath:path];
}
但是每次我运行我的应用程序时,它都会在尝试使用以下消息加载单元格时崩溃:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/containers/Bundle/Application/.../App.app/UIBundle.bundle> (not yet loaded)' with name 'MyCell''
花了一天时间找不到成功的解决方案。任何帮助,将不胜感激。
P.S。 Bundle已成功加载,除了xib文件之外的任何其他资源都可以访问。
答案 0 :(得分:0)
尝试使用NSBundle类的类方法 bundleWithIdentifier:。
- (NSBundle *) xibsBundle {
return [NSBundle bundleWithIdentifier:@"UIBundle"];
}
或强>
如果您知道捆绑包的路径,请尝试使用以下内容:
myBundle = [NSBundle bundleWithPath:@"Path\to\UIBundle"];
答案 1 :(得分:0)
解决我的问题的唯一方法是按照以下步骤操作:
Latest iOS
。 我将它们复制到我自己的包中,一切正常。