自定义 tableViewCell 滚动时显示不正确

Posted

技术标签:

【中文标题】自定义 tableViewCell 滚动时显示不正确【英文标题】:Custom tableViewCell displays incorrectly when scrolled 【发布时间】:2013-12-17 13:31:53 【问题描述】:

我有一个表格视图,其中填充了一组名称和图像。我通过继承 UITableViewCell 添加了一个自定义单元格。自定义单元格包含一个 UIImage,其模式设置为“Aspect Fill”,高度和宽度设置为 52,以整齐地适合我的自定义单元格。当我运行应用程序时,它会加载所有图像,并以我指定的尺寸将它们正确地放入我的容器视图中。问题是每当我滚动视图时,重复使用的单元格都会显示图像,就好像我没有自定义单元格一样。换句话说,不正确。这是我的 cellForRowAtIndexPath 方法

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString *cellIdentifier = @"Cell";
    customCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    contact = contactsArray[indexPath.row];
    NSString *firstName = contact[@"mutableFirstName"];
    NSString *lastName = contact[@"mutableLastName"];
    UIImage *image = contact[@"mutableImage"];
    cell.imageView.image = image;
    cell.firstNameLabel.text = firstName;
    cell.lastNameLabel.text = lastName;
    return cell;

【问题讨论】:

你在用故事板吗? 是的,我正在使用故事板 然后将“Cell”设置为单元格标识符 我也这样做了。 相同大小写记住设备区分大小写而模拟器不区分 【参考方案1】:

如果,如果你的 customCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 返回nil ...???

将你的实现修改为:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString *CellIdentifier = @"Cell";

    customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil) 
        cell = [[customCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.backgroundColor = [UIColor clearColor];
    

    cell.imageView.image = image;
    cell.firstNameLabel.text = [NSString stringWithFormat:@"%@", contact[@"mutableFirstName"]];
    cell.lastNameLabel.text = [NSString stringWithFormat:@"%@", contact[@"mutableImage"]];
    return cell;

希望对您有所帮助。

【讨论】:

我关闭了自动布局,这似乎可以解决问题。关于 Balram 的建议,据我了解,在使用情节提要时,不需要添加“if 语句”来确定单元格是否存在。对吗? 除了我上面的回答之外,我将所有图像的大小调整为更易于管理的大小。这可能一直是我的终极问题。谢谢大家。

以上是关于自定义 tableViewCell 滚动时显示不正确的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在自定义单元格中的复选框在快速选择和滚动时显示不同的行为?

C# wpf怎么在grid添加自定义控件时显示滚动条

tableview左滑按钮 tableviewcell自定义左滑按钮

UITableviewCell 在我滚动时显示另一个单元格的文本

工具栏折叠时显示视图

自定义tableviewcell中的文本字段在滚动时离开单元格