1

私のテーブルビューは、編集モードでないときは問題なく動作します。すべてのセルが期待どおりに表示されますが、編集モードに入ってスクロールすると、編集モードで再描画されたセルの内容が正しくありません。編集をオフにする関数で、テーブル データをリロードすると、再び正しく表示されます。

ここに関連するコードがあります。

- (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];
}

}

次のようになります。

ここに画像の説明を入力

編集中にスクロールすると次のようになります。

ここに画像の説明を入力

4

2 に答える 2

3

最初にオブジェクトを初期化してUITableViewCellから、テーブル ビューからデキューしていますか? これは正しくありません。

試す:

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

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

デモプロジェクトでこれを試したところ、期待どおりに動作しました。

于 2013-04-16T00:18:29.077 に答える
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;
}
于 2013-04-16T05:15:11.077 に答える