删除xib文件会导致“NSInternalInconsistencyException,原因:'无法在捆绑中加载NIB:”
当我删除我的视图控制器的xib文件时,出现此错误:“无法加载NIB捆绑...名称为'LibraryViewController “”。我引用了这个question。删除xib文件会导致“NSInternalInconsistencyException,原因:'无法在捆绑中加载NIB:”
事情我已经这样做:
- 删除从模拟器应用
- 删除导出数据
- 清理build文件夹
- 重新启动我的电脑
- 试图清理的
/var/folders
内容。但是,我无法删除/var/folders
中的文件夹8k,gf和zz,因为它们是Mac OS所必需的。
有什么办法可以删除我的未使用的xib文件而不会崩溃我的应用程序?
更新:
override func viewDidLoad() {
libraryTable.register(UINib(nibName: "categoriesTableViewCell", bundle: nil), forCellReuseIdentifier: "categoriesTableViewCell")
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "categoriesTableViewCell", for: indexPath) as! categoriesTableViewCell
return cell
} else {
let cell = songTableViewCell()
return cell
}
}
更换,您注册的细胞(你现在想在代码,而不是的.xib /故事板创建)的代码,如下所示:
libraryTable.register(UITableViewCell.self, forCellReuseIdentifier: "categoriesTableViewCell")
的你在上面显示的那一行注册了笔尖,所以当它创建一个单元格的时候,你已经告诉它它在一个特定的笔尖文件中。替换行以编程方式创建默认单元格,这意味着您需要使用swift代码而不是InterfaceBuilder提供的GUI方法对其进行任何修改。这非常简单。
嗨,我其实想删除LibraryViewController.xib。我没有通过故事板或代码在视图控制器xib上放置任何东西,所以我不确定为什么我不能删除它。 – Alex
你可以。什么是确切的错误信息?你必须有引用nib的代码。(类似于单元的寄存器nib)是你的代码中提到的libraryviewcontroller吗? – Mozahler
ohh我意识到我在我的'TabBarViewController'中初始化了'var libraryViewController = LibraryViewController(nibName:“LibraryViewController”,bundle:nil)''。修好了,谢谢! – Alex
你是从一个.xib还是一个故事板手动加载视图控制器,还是一切都是用IB来完成的?是否有可能你的错误是由于你仍然有的代码试图加载不再存在的.xib文件?如果是这样的话,你可以用 创建一个新的.xib,或者在代码中创建一个视图控制器,如果你仍然需要这个功能的话。 – Mozahler
当我第一次创建视图控制器时,我选中了“也创建一个XIB文件”。我没有把任何东西放在视图控制器的xib文件上,我没有在我的代码中注册xib文件,所以视图控制器只能通过代码加载。然而,编译器仍然编译这些视图控制器XIB文件 – Alex
@Mozahler你知道我的问题是否有解决方案吗? – Alex