つまり、セルのデフォルトbackgroundView
を復元する必要があります。UITableViewStyleGrouped
cell.backgroundView = ??;
長い話:いくつかのセルを含むグループ化されたテーブルビューがあります。すべてのセルに対して、ユーザーは何らかの値を選択するか、何らかの入力を行う必要があります。その後、「次へ」ボタンを押すことで、次の ViewController に進むことができます。
とにかく、何かを見逃したことをユーザーに示すために、間違った/欠落しているユーザー入力を含むセルの周りに素敵な赤い境界線を表示します。これを行うにbackgroudView
は、セルの を次のようなカスタム イメージで設定します。
cell.backgroundView = myErrorIndicatingImageView;
セルは次のようになります (スクリーンショット、星とラベルは無視してください)
これまでのところ、これは魅力のように機能します。しかし、ユーザーが入力を修正した後、赤い枠の背景画像を削除して、元の背景を再度表示したいと思います。元の背景は次のようになります (スクリーンショット):
そして、これは問題のようです。
私はいくつかのことを試しました
// try by setting the background to nil
cell.backgroundView = nil;
これにより、背景が完全に削除され、背景のないセルで迷子になります。
// try it with addSubview and later remove the subview again
[cell.backgroundView addSubview:myErrorIndicatingImageView];
これは何もしません。はmyErrorIndicatingImageView
表示されません。でさえ[cell.backgroundView bringSubviewToFront:myErrorIndicatingImageView]
助けにはなりません。
現在、私が持っている唯一の解決策は、へのUITableViewCell
呼び出しごとに新しいを作成することcellForRowAtIndexPath
です。これは機能しますが、単に悪いコードであり、セルを再利用する手法を完全に無視しています。
もっと簡単な解決策があるはずです...次のようなもの
cell.backgroundView = [self.tableView getDefaultBackgroundView];