UITableviewのCellに設定したUITextFieldが画面外にスクロールすると内容が消える件

UITableViewCellにコードでUITextFieldをaddSubviewしたとき、例えばテキストフィールドが複数行あってスクロールしたときに画面外に消えて、再表示したら入力したはずの値が消えてしまう、という場合。

UITableViewが再描画されているんだろうけれど、セルの再利用のidentiferなどを設定してみたりしたがよくわからない。どうやっても消える。仕方がないのでベストな対応策が見つかるまでの応急処置として変数に入力した値を保存しておくことにする。

  1. UITextFieldにTagとデリゲートを設定しておく
  2. UITableViewCellに設定したUITextFieldに入力
  3. textFieldDidEndEditingデリゲートを呼んで値を変数に保存
  4. セルの描画時にその変数をセット

とりあえずこれで入力した値がスクロールから戻ってきてもテキストフィールド内に残ったままになるが、なんか、美しくないような・・・。

UITextField emptied in UITableView when scrolled out of view