1

很简单的问题。在cellForRowAtIndexPath我需要添加一个自定义UILabel. 所以我在给定的方法中尝试这个:

UILabel *titleLbl = [[UILabel alloc] init];
//Other properties etc

if (indexPath.row == 0) titleLbl.text = @"1";
else if (indexPath.row == 1) titleLbl.text = @"2";

[cell addSubview:titleLbl];

问题是当向下滚动我的表格时,标签开始重复和复制。

我怎样才能解决这个问题?

谢谢。

4

2 回答 2

3

将该标签作为子视图添加到

if (!cell) {
  cell =...;
  UILabel *label;
  label.tag = 1;
  [cell addSubview:label];
}

UILabel *label = (UILabel*)[cell viewWithTag:1];
if (indexPath.row == 0) label.text = @"1";

这样,它只会在分配单元格时添加。要检索该标签,请为其添加标签并使用单元格的 viewWithTag 方法

于 2012-07-28T16:21:28.170 回答
0

这是因为您的单元格正在被重复使用,并且每次您都在添加标签。

最好将 UITableViewCell 子类化,在其中添加 UILabel。不要忘记覆盖 prepareForReuse 方法,您可以在该方法中将标签的文本设置为 nil

于 2012-07-28T16:20:57.923 回答