2

我在创建自定义 UITableViewCell 时遇到了难以置信的困难。我已经彻底检查了 stackoverflow 和 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:...] 吗?

4

1 回答 1

1

如果您的目标是 iOS 5,请使用以下命令:

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

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

[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

于 2012-08-15T21:53:59.827 回答