2017-07-02 62 views
2

当我删除我的视图控制器的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 
    } 
} 
+0

你是从一个.xib还是一个故事板手动加载视图控制器,还是一切都是用IB来完成的?是否有可能你的错误是由于你仍然有的代码试图加载不再存在的.xib文件?如果是这样的话,你可以用 创建一个新的.xib,或者在代码中创建一个视图控制器,如果你仍然需要这个功能的话。 – Mozahler

+0

当我第一次创建视图控制器时,我选中了“也创建一个XIB文件”。我没有把任何东西放在视图控制器的xib文件上,我没有在我的代码中注册xib文件,所以视图控制器只能通过代码加载。然而,编译器仍然编译这些视图控制器XIB文件 – Alex

+0

@Mozahler你知道我的问题是否有解决方案吗? – Alex

回答

1

更换,您注册的细胞(你现在想在代码,而不是的.xib /故事板创建)的代码,如下所示:

libraryTable.register(UITableViewCell.self, forCellReuseIdentifier: "categoriesTableViewCell") 

的你在上面显示的那一行注册了笔尖,所以当它创建一个单元格的时候,你已经告诉它它在一个特定的笔尖文件中。替换行以编程方式创建默认单元格,这意味着您需要使用swift代码而不是InterfaceBuilder提供的GUI方法对其进行任何修改。这非常简单。

+0

嗨,我其实想删除LibraryViewController.xib。我没有通过故事板或代码在视图控制器xib上放置任何东西,所以我不确定为什么我不能删除它。 – Alex

+0

你可以。什么是确切的错误信息?你必须有引用nib的代码。(类似于单元的寄存器nib)是你的代码中提到的libraryviewcontroller吗? – Mozahler

+0

ohh我意识到我在我的'TabBarViewController'中初始化了'var libraryViewController = LibraryViewController(nibName:“LibraryViewController”,bundle:nil)''。修好了,谢谢! – Alex

相关问题