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 窗口大小错误