我尝试过这种方法,我使用标签作为表格单元格的子视图,标签中的文字与滚动时的前一个单元格标签内容重叠
var tableCell: CommentTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CommentCell") as? CommentTableViewCell
tableCell!.selectionStyle = UITableViewCellSelectionStyle.None;
if (tableCell == nil) {
println("table view is working")
tableCell = CommentTableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier:"CommentCell")
}
}
答案 0 :(得分:0)
您必须为cellAtIndexPath中的每个单元格设置属性。这种事情大多发生在有图像的情况下,但也可以用文本重现。假设您有自定义单元格,那么每次都要检查该特定行是否有标签,文本,图像等。
为什么会发生这种行为?因为您的每个单元格都可以重复使用,并且如果重复使用的单元格确实包含您在“" new"单元格,或图像,或其他任何东西,将保留并创建一个不一致的错误。
你是如何解决的?
尝试在获取单元格时设置空文本。如果您的单元格是自定义的,请将标签设置为空字符串,将默认单元格标题设置为空字符串。然后从数组中检索您的注释并分配它。如果您提供更多代码,我会发布您应该更改的内容。(我需要cellAtIndexPath方法)。
所以这是你的代码:
var tableCell: CommentTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CommentCell") as? CommentTableViewCell
let label:UILabel = UILabel(frame: CGRectMake(60, 25, 255, 50))
label.attributedText = text1 label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping;
let font = UIFont(name: "Helvetica", size: 13.0)
label.font = font label.sizeToFit();
tableCell!.addSubview(label)
正如我在评论中所说,你的问题是为每个重复使用的单元格添加标签,这会产生重叠。要解决此问题,请尝试:
var tableCell: CommentTableViewCell? = tableView.dequeueReusableCellWithIdentifier("CommentCell") as? CommentTableViewCell
if(!tableCell)
{
let label:UILabel = UILabel(frame: CGRectMake(60, 25, 255, 50))
label.attributedText = text1 label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping;
let font = UIFont(name: "Helvetica", size: 13.0)
label.font = font label.sizeToFit();
label.tag = 1; //This is tag added
// add text
tableCell!.addSubview(label)
}
else
{
let label : UILabel = (UILabel *)cell.viewWithTag(1) as UILabel?
// add text
}