1

我通过 uitableviewcell 子类有一个带有自定义单元格的表格视图。单元格有一个标签 lblResult,在收到结果后会发生变化。它工作得很好,但是,当我向下滚动我的表格视图时,其他随机单元格现在具有相同的结果标签(但它们仍然具有正确的“名称”标签)。

我认为这与重用标识符有关,但我不确定。

如果您需要更多代码来理解我的问题,请告诉我。

单元格在 cellForRowAtIndexPath 中是这样制作的

static NSString *CellIdentifier = @"tableCell";
FriendCell *cell =
    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[FriendCell alloc]
             initWithStyle:UITableViewCellStyleDefault
             reuseIdentifier:nil];
}

然后在返回之前,将单元格传递到 loadingQueue 字典中。当结果加载时,有一个 resultComplete 方法从 loadingQueue 字典中加载单元格,并调用以下内容:

   [[cell lblNumTagged] setText:[NSString stringWithFormat:@"(%d)",[thisDictionary count]]];
    [[cell lblNumTagged] setHidden:NO];
4

2 回答 2

1

是的,这是因为细胞正在被重复使用。

在您的自定义单元格类中,您可以使用prepareForReuse委托方法,该方法在单元格被重用之前被调用并在那里清除单元格的标签......

于 2012-04-28T23:50:55.487 回答
0

我知道这是旧的,但以防万一。我认为这是因为当您创建一个新单元格时,您没有指定标识符。

static NSString *CellIdentifier = @"tableCell";
FriendCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
   cell = [[FriendCell alloc]
         initWithStyle:UITableViewCellStyleDefault
         reuseIdentifier:CellIdentifier];
}

试试这样,注意最后一行的结尾.....

于 2013-06-20T12:39:46.657 回答