title: Objective-C: UITableView cells get written over each time when scrolling up and down
body: <p>I have a <code>UITableView</code> that gets populated via <em>CoreData</em>, and have just noticed something strange. I have about 20 rows or so in the UITable, and when I scroll down the table and back up again, the cell's label gets written over the top of existing text, and keeps on doing it each time i go down and up again. My code for the <code>CellForRowAtIndexPath</code> is:</p>
  
  <pre><code>  // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView   cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  //Some constants ---
  const NSInteger TOP_LABEL_TAG = 1001;
  const NSInteger BOTTOM_LABEL_TAG = 1002;
  UILabel *topLabel;
  UILabel *bottomLabel;
  const CGFloat LABEL_HEIGHT = 20;
  //CGRect Imageframe = CGRectMake(7, 5, 35, 35);
  //----
  
  
  
  static NSString *CellIdentifier = @"Cell";
  
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
      cell.textLabel.font = [UIFont boldSystemFontOfSize:12];
  }
  
  //custom implementation of UIView for lazy loading of image 
  //LazyUIImageView *lazy = [[LazyUIImageView alloc] initWithFrame:Imageframe];
  
  
  //[cell addSubview:lazy];
  
  
  
  Post *post = [fetchedResultsController objectAtIndexPath:indexPath];
  
  NSSet *medias = post.PostMedia;
  Media *media = [medias anyObject];
  NSSet *thumbs  = media.MediaThumb;
  Thumb *thumb = [thumbs anyObject];
  
  
  UIImage *img = thumb.url;
  
  if (img)
      cell.imageView.image = img;
  else 
      cell.imageView.image = post.authorpic;
  
  //The creation of the top label
  topLabel =
  [[[UILabel alloc]
    initWithFrame:
    CGRectMake(
               35 + 2.0 * cell.indentationWidth,
               0.5 * (tableView.rowHeight - 2 * LABEL_HEIGHT),
               tableView.bounds.size.width -
               45 - 4.0 * cell.indentationWidth
               - 35,
               LABEL_HEIGHT)]
   autorelease];
  [cell.contentView addSubview:topLabel];
  
  topLabel.tag = TOP_LABEL_TAG;
  topLabel.backgroundColor = [UIColor clearColor];
  topLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0];
  topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
  topLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];
  //---------------------------------
  
  //The creation of the bottom label
  bottomLabel =
  [[[UILabel alloc]
    initWithFrame:
    CGRectMake(
               35 + 2.0 * cell.indentationWidth,
               0.5 * (tableView.rowHeight - 2 * LABEL_HEIGHT) + LABEL_HEIGHT,
               tableView.bounds.size.width -
               35 - 4.0 * cell.indentationWidth
               - 35,
               LABEL_HEIGHT)]
   autorelease];
  [cell.contentView addSubview:bottomLabel];
  //--------------------------------
  
  //
  // Configure the properties for the text that are the same on every row
  //
  bottomLabel.tag = BOTTOM_LABEL_TAG;
  bottomLabel.backgroundColor = [UIColor clearColor];
  bottomLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0];
  bottomLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
  bottomLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize] - 2];
  
  //
  // Create a background image view.
  //
  cell.backgroundView =
  [[[UIImageView alloc] init] autorelease];
  cell.selectedBackgroundView =
  [[[UIImageView alloc] init] autorelease];;
  
  
  topLabel.text = post.title;
  bottomLabel.text = @"put something here";
  
  
  //
  // Set the background and selected background images for the text.
  // Since we will round the corners at the top and bottom of sections, we
  // need to conditionally choose the images based on the row index and the
  // number of rows in the section.
  //
  UIImage *rowBackground;
  UIImage *selectionBackground;
  NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
  NSInteger row = [indexPath row];
  if (row == 0 &amp;&amp; row == sectionRows - 1)  //all
  {
      rowBackground = [UIImage imageNamed:@"topAndBottomRow.png"];
      selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];
  }
  else if (row == 0) //top
  {
      rowBackground = [UIImage imageNamed:@"topRow.png"];
      selectionBackground = [UIImage imageNamed:@"topRowSelected.png"];
  }
  else if (row == sectionRows - 1) //bottom
  {
      rowBackground = [UIImage imageNamed:@"bottomRow.png"];
      selectionBackground = [UIImage imageNamed:@"bottomRowSelected.png"];
  }
  else //middle
  {
      rowBackground = [UIImage imageNamed:@"middleRow.png"];
      selectionBackground = [UIImage imageNamed:@"middleRowSelected.png"];
  }
  ((UIImageView *)cell.backgroundView).image = rowBackground;
  ((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;
  
  
  //[lazy release];
  
  return cell;
  </code></pre>
  
  <p>}</p>
  
  <p>Thanks for your help in advance!</p>