【发布时间】:2017-12-05 14:44:43
【问题描述】:
当我删除视图控制器的 xib 文件时,出现以下错误:“无法在包中加载 NIB...名称为 'LibraryViewController'”。我引用了这个question。
我已经做过的事情:
- 从模拟器中删除应用
- 已删除派生数据
- 清理构建文件夹
- 重新启动我的电脑
- 已尝试清除
/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 或情节提要手动加载视图控制器,还是使用 IB 完成所有操作?您的错误是否可能是由于您仍然拥有尝试加载不再存在的 .xib 的代码?如果是这样,您可以创建一个新的 .xib,或者如果您仍然需要该功能,可以在代码中创建一个视图控制器。
-
当我第一次创建视图控制器时,我检查了“同时创建一个 XIB 文件”。我没有在视图控制器 xib 文件上放置任何内容,也没有在代码中注册 xib 文件,因此视图控制器应该仅通过代码加载。但是,编译器仍然编译那些视图控制器 XIB 文件
-
@Mozahler 你知道我的问题是否有解决方案吗?
-
我以为我做到了,但你的最后一条笔记让我很困惑。如果删除了文件,编译器如何编译它们?如果确实删除了 .xib 文件,则这些文件不会导致您的错误。您的错误是由于您仍然拥有的代码尝试加载不再存在的 .xib 。您可以在注册出列的单元格的位置显示您的代码吗?也是 cellForRowAt 中的行,用于使单元格出列。这应该告诉我们我们需要知道什么。另一种可能性是您引用了 IB 中需要更新的单元格。
-
@Mozahler 好的,我更新了我的答案。另外,我正在尝试删除与我的库视图控制器关联的“LibraryViewController.xib”。视图控制器xib完全独立于表格视图单元xib,“categoriesTableViewCell.xib”,所以我不确定为什么需要请求的代码