在UITableview中滚动时单元格会发生变化

时间:2016-04-11 19:57:14

标签: ios objective-c uitableview

我知道这个问题已被多次询问过,但没有一个答案可以解决这个问题。当我向下滚动UITableView然后向上滚动时,单元格内容会发生变化,看起来它是另一个单元格内容。如果可以提供一个非常好的代码示例,我该如何解决这个问题。这是我尝试过的一个答案,有道理,但我不知道如何实施:Link

这是我的代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{


  SearchedCell *cell = (SearchedCell *)[tableView dequeueReusableCellWithIdentifier:@"any-cell"];

  if (!cell)
  {
      cell = [[SearchedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"any-cell"];
  }


  NSDictionary *dict = [[appDel.jsonDict valueForKey:@"results"] objectAtIndex:indexPath.row];

  if([dict valueForKey:@"BusinessUrl"] == nil)
  {
    cell.btnMenu.hidden = TRUE;
  }
  else
  {
    cell.btnMenu.hidden = FALSE;
  }

  cell.lblRestaurantName.text = [dict valueForKey:@"name"];

  NSString *tmpAddr = [dict valueForKey:kResponseVicinity];
  cell.lblAddress.text = tmpAddr;
  if(appDel.isNearClicked)
  {
      cell.lblDistance.text = @"";
  }
  else
  {
    cell.lblDistance.text = @"";
  }
  cell.lblPhoneNo.text = [dict valueForKey:@"Phone"];

  [cell.btnCall addTarget:self action:@selector(CallClicked:) forControlEvents:UIControlEventTouchUpInside];
  [cell.btnMap addTarget:self action:@selector(MapClicked:) forControlEvents:UIControlEventTouchUpInside];
  [cell.btnMenu addTarget:self action:@selector(MenuClicked:) forControlEvents:UIControlEventTouchUpInside];
  cell.btnCall.tag = indexPath.row;
  cell.btnMap.tag = indexPath.row;
  cell.btnMenu.tag = indexPath.row;

  return cell;

}

2 个答案:

答案 0 :(得分:1)

您需要在自定义单元格类中实现prepareForReuse

答案 1 :(得分:-1)

你必须做这样的事情: -

os.read()

}