第二次无法设置UITablevIewCell textLabel文本

时间:2013-06-12 05:36:37

标签: ios objective-c

预先:我是一个菜鸟。

我有一个方法可以在UITableViewCell中设置textLabel对象上的文本。相关的代码段是:

NSLog(@"BEFORE .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text);
NSLog(@"BEFORE activity.name: %@", theSelectedActivityToDisplayAndSave.name);
_addWarmupActivityTableViewCell.textLabel.text = theSelectedActivityToDisplayAndSave.name;
NSLog(@"AFTER .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text);

第一次设置时,它可以正常工作。您可以通过此日志记录查看:

[12231:c07] BEFORE .textLabel.text: (null)
[12231:c07] BEFORE activity.name: Animal Movements
[12231:c07] AFTER .textLabel.text: Animal Movements

然后,在之后调用它的任何后续时间,它将返回一个null,如以下日志记录所示:

[12231:c07] BEFORE .textLabel.text: (null)
[12231:c07] BEFORE activity.name: Animal Movements
[12231:c07] AFTER .textLabel.text: (null)

我必须承认我有点难过。我已经在其他帖子中读过(可能是)任何时候修改textLabel它实际上创建了一个新的UILabel对象。但是,对我来说,在我尝试设置它之后仍然没有解释为什么它是一个(null)一行?

任何指向正确方向的人都会非常感激。

干杯。

1 个答案:

答案 0 :(得分:0)

你没有显示你分配/出列单元格的代码,所以很难说 - 我假设你在你列出之前的某个地方分配它。

你会有这样的事情:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = theSelectedActivityToDisplayAndSave.name; // wherever you get this from
    return cell;
}

这看起来与您使用的方法类似吗?

我认为我要看的是细胞是否正确分配。