iOS:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题

Posted

技术标签:

【中文标题】iOS:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题【英文标题】:iOS: Xcode appears to be inserting an extra space into XIB file name causing "Could not load XIB file" issue 【发布时间】:2013-01-24 19:23:10 【问题描述】:

我有一个使用自定义表格视图单元格的 UITableViewController(我已经为我的自定义 UITableViewCell 子类创建了一个 XIB)

当我的应用尝试加载表格视图控制器时,它会崩溃并出现以下错误:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/CoolDocsMan/Library/Application Support/iPhone Simulator/5.1/Applications/Z7BB7085F-37A7-4B92-89A3-37EC34531B08/FunkySpaces.app> (loaded)' with name 'AdminConfirmTableViewCell''

按照Could not load NIB in bundle 帖子中的建议之一,我通过浏览以下内容检查了我的库中的 app 文件夹:

/Users/CoolDocsMan/Library/Application Support/iPhone Simulator/5.1/Applications/Z7BB7085F-37A7-4B92-89A3-37EC34531B08/FunkySpaces.app

我对其他类似的 tableVC 使用了相同的技术,但发现虽然所有其他 XIB 文件都已正确翻译成 .nib,但这个特定的 tableview 单元格 XIB 在其末尾有一个额外的空格。

即'AdminConfirmTableViewCell .nib' 而不是 'AdminConfirmTableViewCell.nib'

我在 XCode 中进行了全局搜索,看看我是否打错字并在 AdminConfirmTableViewCell 之后插入了一个额外的空格,但没有找到。

这是来自 tableVC 的 ViewDidLoad 的代码部分,其中包含 AdminConfirmTableViewCell:

//Load the NIB file
UINib *nib = [UINib nibWithNibName:@"AdminConfirmTableViewCell" bundle:nil];

//register this NIB whch containes the cell    
[[self tableView] registerNib:nib forCellReuseIdentifier:@"AdminConfirmTableViewCell"];

谢谢!

【问题讨论】:

【参考方案1】:

这是我在堆栈溢出中的第一个答案!试试这个怎么样,显然是根据你的需要定制的

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

RootViewController *addController = [[RootViewController alloc]
                                      initWithNibName:@"nibnamehere" bundle:nil];

UINavigationController *navigationController = [[UINavigationController alloc]
                                                initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:NO];

[navigationController release];
[addController release];

【讨论】:

感谢您抽出宝贵时间回复并祝贺您提出第一个答案。我正在寻找特定于额外空间的东西而不是重新设计:-)【参考方案2】:

我终于找到了问题所在,现在明白了为什么我扫描代码时它没有出现。问题实际上在于我在界面生成器中的身份检查器下为我的自定义 UITableView 单元(AdminConfirmTableViewCell)指定自定义类的方式。

我在自定义类下的 Identity Inspector 中拼写了“AdminConfirmTableViewCell”,末尾有一个额外的空格......因此 AdminConfirmTableViewCell.xib 的这个名称带有额外的空格(参见屏幕截图......)并且在构建时,XCode将其翻译成一个 NIB 文件作为 'AdminConfirmTableViewCell. nib' 有一个额外的空格。

删除多余的空间后一切正常!在 Interface Builder 实现中留下这一空白似乎与 Apple 完全不同,这使得开发人员可能会犯此类错误。

【讨论】:

以上是关于iOS:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 iPhone 5 的 Xcode 6 LaunchScreen.xib 窗口大小错误

Xcode 4.3 停止构建 XIB 文件

Xcode 5.0 .xib 文件?它在哪里?

XCode 5 ImageView 在 ios 6 中消失

为啥 XCode 4 在使用情节提要时不创建 XIB 文件?

使用 xcode5 时图像未显示在 xib 和模拟器中