gpt4 book ai didi

iphone - 重用 UITableViewCell 时遇到问题

转载 作者:行者123 更新时间:2023-12-03 20:52:44 25 4
gpt4 key购买 nike

我有以下代码,它为 UITableViewCell 绘制分隔线和文本。它看起来不错,但是当我滚动屏幕然后返回时,分隔线消失了,但文本仍然很好。有什么想法吗?

  static NSString *aProgressIdentifier = @"CustomerCell";
UITableViewCell *aCustomerCell = [iTableView dequeueReusableCellWithIdentifier:aProgressIdentifier];
if (!aCustomerCell) {
aCustomerCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:aProgressIdentifier] autorelease];
aCustomerCell.contentView.backgroundColor = [UIColor whiteColor];
UIImageView *aLine = [[UIImageView alloc] initWithFrame:CGRectMake(0, 72, 800, 1)];
aLine.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0];
[aCustomerCell addSubview:aLine];
[aLine release];
}

CMACustomer *aCustomerObject = aCellObject;
aCustomerCell.textLabel.text = aCustomerObject.customerFullName;
aCustomerCell.detailTextLabel.text = nil;
aCell = aCustomerCell;

最佳答案

尝试将“aLine” ImageView 添加为 contentView 的 subview ,而不是整个表格本身。可能当单元格被重用,然后再次调用layoutSubviews时,contentView会重叠(白色背景)你的aLine。事实上,考虑到 iOS 默认单元格的 subview 每次在屏幕上显示时都会动态重绘和调整大小。

所以我会尝试这个:


[aCustomerCell.contentView addSubview:aLine];

如果这不起作用,您能做的就是完全删除 contentView 并添加您自己的自定义 subview (在 if(!aCustomerCell) 内部而不是外部执行此操作,除非您无法获得单元格重新生成的好处-使用):


if (!aCustomerCell) {
aCustomerCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:aProgressIdentifier] autorelease];
[cell.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIImageView *aLine = [[UIImageView alloc] initWithFrame:CGRectMake(0, 72, 800, 1)];
aLine.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0];
[aCustomerCell.contentView addSubview:aLine];
[aLine release];
}

最后,另一项检查是验证单元格高度是否> 72(这似乎是一项微不足道的检查,但它常常是令人头痛的根源!)。

关于iphone - 重用 UITableViewCell 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com