从启用了 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 出列单元格的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 和自定义 UITableViewCell 使用 .xib
如何从 ViewController 中的 xib (nib) 实例化 UIView / UITableView
将 xib 文件作为 UITableViewController 中的标头添加到 UITableView