不在编辑模式时,我的tableview工作得很好。 所有单元格都按预期显示,但如果我进入编辑模式并滚动,则在编辑模式下重绘的单元格内容不正确。 在我关闭编辑的功能中,我重新加载表数据并再次正确显示。

这里是相关代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{    
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];


FieldItemDecrypted *theField = [decryptedArray objectAtIndex:indexPath.row];




    // Configure the cell...

      cell.textLabel.text = [[NSString alloc] initWithData:theField.field encoding:NSUTF8StringEncoding];
      cell.detailTextLabel.text = [[NSString alloc] initWithData:theField.type encoding:NSUTF8StringEncoding];    


return cell;
}

我的编辑代码:

- (IBAction)editRows:(id)sender
{

if ([self.tableView isEditing])
{
    [self.tableView setEditing:NO animated:YES];
    [self.tableView reloadData];
}
else
{
    [self.tableView setEditing:YES animated:YES];
}

}

应该是这样的:

在此输入图像描述

但在编辑后滚动后看起来像这样:

在此输入图像描述

===============>>#1 票数:3 已采纳

您是先初始化UITableViewCell对象,然后从表视图中出列? 这是不正确的。

尝试:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if(cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

我刚刚在一个演示项目上尝试了这个,它的行为符合预期。

===============>>#2 票数:1

我对这种类型的细胞再利用更熟悉:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{    
  static NSString *CellIdentifier = @"Cell";   
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  if (!cell) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                      reuseIdentifier:nil];
  }
  FieldItemDecrypted *theField = [decryptedArray objectAtIndex:indexPath.row];
  // Configure the cell...

  cell.textLabel.text = [[NSString alloc] initWithData:theField.field encoding:NSUTF8StringEncoding];
  cell.detailTextLabel.text = [[NSString alloc] initWithData:theField.type encoding:NSUTF8StringEncoding];    


  return cell;
}

  ask by Steven Marlowe translate from so

未解决问题?本站智能推荐: