1

在某些情况下,在我的表格单元格中,将图像添加到单元格中。我的单元格显示不正确。这是我的意思的图片:

在此处输入图像描述

第二个锁图标不属于那里...我不确定它是如何或为什么会出现在那里的。在此示例中,数组的计数为 2,因此附加锁甚至不在单元格内。

这永远不会在初始加载时发生,而是在第一次重新加载单元格时发生。这也让我感到困惑,因为初始加载功能与重新加载功能相同。

这是单元格本身的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [UITableViewCell configureFlatCellWithColor:[UIColor greenSeaColor] selectedColor:[UIColor wetAsphaltColor] reuseIdentifier:CellIdentifier inTableView:(UITableView *)tableView];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        [cell configureFlatCellWithColor:[UIColor greenSeaColor] selectedColor:[UIColor wetAsphaltColor]];

    }

    Room *room;

    //is data filtered?
    if(isFiltered)
    room = [filteredTableData objectAtIndex:indexPath.row];
    else
    room = [roomList objectAtIndex:indexPath.row];


    cell.textLabel.text = room.roomName;
    cell.detailTextLabel.text = room.hostUsername;

    //lock icon or not
  if(room.password != nil)
{
    UIImageView *pw = [[UIImageView alloc] initWithImage:img];
    pw.tag = [room.rid integerValue];
    [pw setImage:img];
    pw.frame = CGRectMake(cell.frame.size.width - cell.frame.size.height, cell.frame.origin.y,
                          cell.frame.size.height - 2, cell.frame.size.height - 2);
    [cell.contentView addSubview:pw];
}
else{ //remove the content view if not needed
    [[cell.contentView viewWithTag:[room.rid integerValue]] removeFromSuperview];
}


    return cell;
}

根据记录,iOS7 不会发生这种情况(我知道它在 NDA 下,但如果有帮助,我只想提一下这个事实)。

4

2 回答 2

2

重复使用的单元格上的图标未清除,因此如果没有密码,请删除 pw 视图

if(room.password != nil)
{
    ...
    pw.tag = 12345;
} else {
    [[cell.contentView viewWithTag:12345] removeFromSuperView];
}

当然,我建议您将此视图分配给单元格,accessoryView而不是像现在这样,但这回答了您的问题。有关更多信息,请参阅文档accessoryView

于 2013-08-30T21:39:17.153 回答
0

我最终创建了自己的 UITableViewCell,初始化图像并将这两个函数用于锁定:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        img = [UIImage imageNamed:@"password.png"];                 
        pw = [[UIImageView alloc] initWithImage:img];
        [pw setImage:img];
        pw.frame = CGRectMake(self.frame.size.width - self.frame.size.height, self.frame.origin.y,
                              self.frame.size.height - 2, self.frame.size.height - 2);
        pw.tag = 1;

    }
    return self;
}
-(void)enableLock{
    [self.contentView addSubview:pw];
}

-(void)disableLock{
    [[self.contentView viewWithTag:1]removeFromSuperview];
}
于 2013-08-31T00:11:48.820 回答