読者です 読者をやめる 読者になる 読者になる

なかじまの開発ブログ

アプリ開発における備忘録などなど。

MENU

UITableViewをスクロールした際に、内容がかぶってしまうを解決【Objective-C】

Objective-C

参考サイト
UITableViewのチェックマークがスクロールすると消えてしまう(15498)|teratail


スクロールをして見えなくなったセルは、再利用のために情報がなくなってしまうようですね。

なので、セル別に情報を保存することによって解決するようです。


カスタムセルの場合ですが何か参考になれば・・・。

『ヘッダー』

NSMutableArray *objects;   // セルを記憶
NSMutableArray *indexArray;  // indexPath.rowを記憶
NSMutableArray *stringArray; // 文字列を記憶

NSMutableArrayはallocするのを忘れないように。


メソッド

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

  // indexArrayの中身が存在するかチェック
  if (indexArray && [indexArray containsObject:@(indexPath.row)]) {
    cell.textLabel.text = [stringArray objectAtIndex:(int)indexPath.row];
  } else {
    cell.textLabel.text = textField.text;
  }

  return cell;
}

// セルを追加
- (IBAction)addBtnTap:(id)sender {
  // 追加したインデックスを記憶
  [indexArray addObject:@(objects.count)];

  // 追加したtextLabelの情報を記憶
  [stringArray addObject:textField.text];

  送る処理省略
}


こちらもどうぞnsdevelop.hatenablog.com