xcode / cocoa:重用自定义单元格中的标识符

时间:2012-04-28 23:48:03

标签: objective-c xcode cocoa-touch

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

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

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

在cellForRowAtIndexPath

中制作单元格
static NSString *CellIdentifier = @"tableCell";
FriendCell *cell =
    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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

相关问题