Setter方法不适用于UITableViewCell子类的属性

时间:2014-01-22 21:33:12

标签: ios objective-c uitableview

我正在尝试获取一个表格以显示名称和排名列表。在每个单元格中,我希望有2个UILabel作为子视图 - 一个用于显示等级的UILabel和一个用于显示名称的UILabel。

我创建了一个UITableViewCell子类,它有两个属性,如下所示:

@interface MyTableViewCell : UITableViewCell

@property UILabel* rankLabel;
@property UILabel* nameLabel;

除了@synthesize之外,我没有为每个属性添加任何内容到MyTableView的.m实现文件中。实现文件的其余部分就是xCode在创建UITableViewCell子类时为您提供的内容。

然后,在包含该表的masterViewController中,我有以下内容:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    Person *object = _objects[indexPath.row];

    if (cell == nil) {
    cell = [[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    cell.nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(cell.frame.size.height, 0, cell.frame.size.width - cell.frame.size.height, cell.frame.size.height)];
    cell.nameLabel.text = object.name;
    [cell addSubview:cell.nameLabel];

    NSString* rankString = [object.rank stringValue];
    cell.rankLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.height, cell.frame.size.height)];
    cell.rankLabel.text = rankString;
    [cell addSubview:cell.rankLabel];
}

当我在调试中运行它时,它会到达我设置cell.nameLabel并分配它的第一行,并抛出以下错误:

[UITableViewCell setNameLabel:]: unrecognized selector sent to instance 0x108fa64c0

真的不明白为什么setNameLabel方法应该在这里遇到问题。有任何想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

错误似乎告诉你确切的问题。它并没有说[MyTableViewCell setNameLabel:]它说[UITableViewCell setNameLabel:]您可能忘记将故事板中单元格的类更改为MyTableViewCell ...

编辑:不,他没有使用故事板,但崩溃显然似乎与错误类的单元格有关。

编辑:是的他是,或者至少Xcode正在为他做这件事。