如何正确链接自定义 UITableViewCell 和访问元素

Posted

技术标签:

【中文标题】如何正确链接自定义 UITableViewCell 和访问元素【英文标题】:How to properly link up a custom UITableViewCell and access elements 【发布时间】:2012-08-15 21:48:41 【问题描述】:

我在创建自定义 UITableViewCell 时遇到了难以置信的困难。我已经彻底检查了 *** 和 google,但发布的所有解决方案要么不完整、不正确,要么做得不够。

这就是我想要做的。我想在自定义单元格中加载 MyTableViewController,我们称它们为 MyCustomCell,而不是默认单元格。我希望 MyCustomCell 成为 UITableViewCell 的完整子类,所以我有一个只有一个 UITableViewCell(以及其中的一些测试标签)的 .xib。单元标识符设置为“MyCustomCell”,类设置为“MyCustomCell”。我可以使用 MyCustomCell.h 拖动和链接标签。

回到 MyTableViewController.m,我得到了以下代码

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

static NSString *ident = @"MyCustomCell";

MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:ident];//appears to crash here
if(cell == nil)
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:ident owner:self options:nil];
    for(id currentObject in topLevelObjects)
        if([currentObject isKindOfClass:[MyCustomCell class]])
            cell = (MyCustomCell*)currentObject;
            break;
        
    

cell.myCustomLabel.text = @"hello world";//myCustomLabel from the .xib is linked up to the 
//proper variable in MyCustomCell.h, and it's also being synthesized
//I'd like to modify all the custom labels,imageviews,etc here
return cell;

运行它会给我以下错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MyTableViewController 0x7d5ba80> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myCustomLabel.'

这通常出现在我忘记将某些东西与 .xib 和它的 .h 文件挂钩时,或者可能在它没有合成时出现,但我已经检查过并且似乎解决了。我在这里做错了什么吗?我必须做 [[MyCustomCell alloc] init] 或 [[MyCustomCell alloc] initWithCustomMethod:...] 吗?

【问题讨论】:

【参考方案1】:

如果您的目标是 ios 5,请使用:

 [self.tableView registerNib:[UINib nibWithNibName:@"yourNibName" bundle:nil] forCellReuseIdentifier:@"yourNibIdentifier"];

然后,您只需使用标识符从笔尖获取单元格

[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

最后:确保您实际上为 UITableViewCell 子类的 nib 分配了正确的类名和正确的标识符。

【讨论】:

您的第一个建议似乎不起作用。我也再次检查了笔尖,一切看起来都应该可以工作。最后,我只是删除了所有内容,重新开始,现在看起来一切都刚刚好

以上是关于如何正确链接自定义 UITableViewCell 和访问元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中使自定义 UITableViewCell 中的链接可点击

使用 xib 和自动布局的自定义 UITableViewCell 无法在顶部的多个单元格中正确显示

将多个自定义 UITableViewCell 链接到单个 xib

自定义 UITableViewCell 中的 UIImageview 未正确显示

自定义 UITableViewCell 未正确加载

调整 UILabel 的大小以适应自定义 UITableViewCell 中的文本,无论宽度如何