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]; }
という素敵な解法がありました.
単純だけど気が付かなかった.勉強になりました.