在UI表视图中滚动时文本是否重叠?

时间:2015-02-17 06:45:22

标签: ios swift

我尝试过这种方法,我使用标签作为表格单元格的子视图,标签中的文字与滚动时的前一个单元格标签内容重叠

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")
}

}

This is the result I got while scrolling

1 个答案:

答案 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
}