追加したsubviewsをすべて消したい

UITableViewにcell作ってラベルやらボタンやらをのっけて作っていたのですが,Xcodeで作成するUITableViewControllerのクラステンプレートを見るとわかる通り,

(UITableViewCell *)tableView:(UITableView *)tableView
                      cellForRowAtIndexPath:(NSIndexPath *)indexPath

の定義中に

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                                                     CellIdentifier];

という処理がなされており,セルが再利用されていることがわかります.

そうすると,テーブルをスクロールする過程で前に設置した部品やらが現れてきてしまったりして厄介です.いったんセルを全部きれいにしたいなあと思ったときのやり方を模索していたのですが,
http://stackoverflow.com/questions/3005540/how-to-remove-sub-views

for (UIView *view in [self.view subviews]) {[view removeFromSuperview]; }

という素敵な解法がありました.
単純だけど気が付かなかった.勉強になりました.


カテゴリー: iOSアプリ開発, 技術的なこと パーマリンク