滚动后UITableViewCell重复

虽然已经有一些问题已经被问到这个问题,但我似乎无法解决这个问题。 问题是,当我滚动或重新加载我的UITableView时,单元格重复。 我知道问题与重复使用细胞有关。 这是一个出错的截图:

http://imgur.com/JrnERSD

这是我用来自定义单元格外观的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellID = @"DividendCell"; DividendCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; if (cell == nil) { [tableView registerNib:[UINib nibWithNibName:cellID bundle:nil] forCellReuseIdentifier:cellID]; cell = [tableView dequeueReusableCellWithIdentifier:cellID]; } dividend *div = [[[aAgendaItems objectAtIndex:indexPath.section] agendaItems] objectAtIndex:indexPath.row]; [cell setDiv:div]; return cell; 

}

我使用Xib作为自定义单元格。

希望有人能帮助我!

编辑:

这是将数据应用于行的setDiv方法的代码:

 -(void)setDiv:(dividend *)div { NSString *text = [[NSString alloc] initWithString:[[[div RelatedIssue] ShortName] capitalizedString]]; [issueName setText:text]; [text release]; text = [[NSString alloc] initWithString:[div Description]]; [issueType setText:text]; [text release]; text = [[NSString alloc] initWithString:[div Currency]]; [issueCurrency setText:text]; [text release]; text = [[NSString alloc] initWithString:[super formatDouble:[div BrutValue]]]; [issueKoers setText:text]; [text release]; NSDateFormatter *format = [[NSDateFormatter alloc] init]; NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"]; [format setLocale:loc]; [format setDateFormat:@"dd MMM"]; text = [[NSString alloc] initWithString:[format stringFromDate:[div ExDividendDate]]]; [exDividendDate setText:text]; [text release]; NSComparisonResult result = [[div PaymentDate] compare:[NSDate date]]; text = [[NSString alloc] initWithString:[format stringFromDate:[div PaymentDate]]]; if (result==NSOrderedAscending) { [exPaymentDate setTextColor:[UIColor darkGrayColor]]; } else { [exPaymentDate setTextColor:[UIColor blackColor]]; } [exPaymentDate setText:text]; [text release]; [loc release]; 

}

由于单元格正在被重用,这意味着单元格中的所有子视图也会被重用。 您需要设置或重置最终显示在单元格中的任何内容。

例如,如果您为某些单元格而不是其他单元格设置了UILabel“副标题”,则必须确保[subtitle setText:@""]如果它是空值或零值,或者[subtitle setText:realValueString]如果它有合法的价值。 如果不这样做,“旧”单元格中的子视图将继续具有旧值并显示在“新”单元格中。

我设法通过反复试验来解决问题。 解决方案是检查特定标签的“ 属性”检查器中“ 视图” >“ 绘图”下的 清除图形上下文 ”复选框。 我注意到这个盒子没有检查相互重叠的标签。 真奇怪的imo。 但很高兴我在疯狂一周后解决了这个问题。