从启用了 xib 文件的 UITableView 出列单元格

Posted

技术标签:

【中文标题】从启用了 xib 文件的 UITableView 出列单元格【英文标题】:Dequeueing cells from UITableView that have xib files enabled 【发布时间】:2013-12-05 21:21:54 【问题描述】:

在我的 UITableViewController 子类中,我按如下方式注册了我的单元类:

[[self fieldListTableView] registerClass:[MyCellClass class] forCellReuseIdentifier:@"MyCellIdentifier"];

然后我使用 ios 6 中引入的方法将单元格出列:

MyCellClass* cell = (MyCellClass *)[tableView dequeueReusableCellWithIdentifier:@"MyCellIdentifier" forIndexPath:indexPath];

但是单元格的 xib 文件似乎丢失了。当我在 lldb 中运行 po cell 时,我得到了一个看起来有效的单元格对象。然后当我尝试po [cell myLabelOutlet] 时,我得到一个nil 作为响应。

我也需要注册 XIB 文件吗?

【问题讨论】:

【参考方案1】:

要从 xib 文件加载单元格,您必须使用 registerNib: 注册它,而不是使用 registerClass:。示例:

[self.fieldListTableView registerNib:[UINib nibWithNibName:@"MyCellClass" bundle:nil]
  forCellReuseIdentifier:@"MyCellIdentifier"];

【讨论】:

当我这样做时,我在这条线上得到一个 SIGABRT:MyCellClass* cell = (MyCellClass *)[tableView dequeueReusableCellWithIdentifier:@"MyCellIdentifier" forIndexPath:indexPath]; 这个答案是对的。我在 XIB 文件中也做错了,这就是导致崩溃的原因。

以上是关于从启用了 xib 文件的 UITableView 出列单元格的主要内容,如果未能解决你的问题,请参考以下文章

来自xib的UITableView中没有数据

UITableView 和自定义 UITableViewCell 使用 .xib

如何从 ViewController 中的 xib (nib) 实例化 UIView / UITableView

将 xib 文件作为 UITableViewController 中的标头添加到 UITableView

来自 XIB 错误的 UITableView 和 UITableViewCell?

在 UITableView 单元格中显示 xib 视图