我有一个使用自定义表格视图单元格的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
我对其他类似的tableVCs使用相同的技术,但发现当所有其他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"];
谢谢!
答案 0 :(得分:0)
这是我在堆栈溢出中的第一个答案!如何尝试这一点,显然可以根据您的需求进行定制
- (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];
}
答案 1 :(得分:0)
我终于找到了问题并立即了解为什么在我扫描代码时它没有显示出来。问题实际上是我在界面构建器中的Identity检查器下为我的自定义UITableView单元(AdminConfirmTableViewCell)指定了自定义类的方式。
我在自定义类下的Identity Inspector中最后拼出了'AdminConfirmTableViewCell'和额外的空格...因此AdminConfirmTableViewCell.xib有这个带有额外空格的名称(参见截图...)和构建时,XCode将其转换为NIB文件,作为'AdminConfirmTableViewCell。 nib'有一个额外的空间。
在移除额外空间时,一切都解决了!看起来与Apple不同,它在Interface Builder实现中留下了这个空白,这使开发人员可能会犯这些错误。