Ios 为什么当我的UITableView尝试加载时出现无法出列的错误?

Ios 为什么当我的UITableView尝试加载时出现无法出列的错误?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我得到以下错误: *由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“无法将单元格出列。” 使用标识符FontCell-必须为 标识或连接故事板中的原型单元 我不确定我到底做错了什么。我设置了单元标识符(以编程方式,因为它不是通过Interface Builder创建的),并完成了我认为应该在委托方法中执行的所有操作,但当我尝试加载UITableView时,仍然会出现该错误 以下是相关代码(值得注意的是,我已将UITableViewC

我得到以下错误:

*由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“无法将单元格出列。” 使用标识符FontCell-必须为 标识或连接故事板中的原型单元

我不确定我到底做错了什么。我设置了单元标识符(以编程方式,因为它不是通过Interface Builder创建的),并完成了我认为应该在委托方法中执行的所有操作,但当我尝试加载UITableView时,仍然会出现该错误

以下是相关代码(值得注意的是,我已将UITableViewCell子类化为自定义选项):

下面是我在子类UITableViewCell(FontCell)中更改的唯一方法:


我到底做错了什么?

最简单的修复方法是将其更改为
FontCell*cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier]
与当前代码一样,如果使用此方法,则必须检查以确保
单元格
不是
nil


或者,您可以在与
@“FontCell”

例如(在
viewDidLoad
中向上):

那你就可以了

FontCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FontCell" forIndexPath:indexPath];

使用此方法的好处是,您知道您的单元格永远不会为
nil
,因此您可以立即开始修改它。

您使用的是
dequeueReusableCellWithIdentifier:forIndexPath:
方法。该方法的文档说明如下:

You must register a class or nib file using the registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier: method before calling this method.
所以这里

[self.tableView registerClass: [FontCell class] forReuseIdentifier: @"FontCell"];

我也遇到过这样的问题,我找到的解决办法是:

转到项目导航器并选择“ViewController.h”。附加

 <UITableViewDelegate, UITableViewDataSource>

在“UIViewController”之后。

如果像我一样使用表视图(而不是表视图控制器),则默认情况下不会出现单元格

在情节提要中,选择tableview 打开属性检查器 将原型单元格从0更改为1 选择新显示的表格单元格
在属性检查器中,将标识符设置为“FontCell”

可能应该注册他的
FontCell
类,这是
UITableViewCell
@Brian Yeah使用自定义单元格注册时,该单元格应该是[self.tableView registerClass:[FontCell class]forCellReuseIdentifier:@“FontCell”];这是什么?那会怎么样?如果我更改每个单元格的标识符呢。我认为它不会起作用。还有其他方法吗?我发现这个线程有一个很好的解决方案:
You must register a class or nib file using the registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier: method before calling this method.
[self.tableView registerClass: [FontCell class] forReuseIdentifier: @"FontCell"];
 <UITableViewDelegate, UITableViewDataSource>