iOS UITableViewController weird behavior

うーむ、奇妙な現象にハマっていた!!

説明が難しいのだが、UITableViewControllerで開閉(Collapse)可能なテーブルセルを作ったところ、ヘッダビューの表示が崩れるという問題

言葉での説明が難しいのでスクリーンキャストを見てください

開閉すると、セクションヘッダが移動しない。というより移動しつつも、残像がある

“読み物ラインアップ”、”診断ラインアップ”などは下記のメソッドのオーバーライドで作成している

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

この問題を改善するためにviewForHeaderInSection:を使わずにtitleForHeaderInSection:を使ってみたりしたのだが改善せず

その他にもかなりコードを削りながらデバッグしたが結局原因が分からないまま。この画面はUITableViewControllerをxibもstoryboardも使わずにprogramaticallyに作成していたので、一旦この実装を置いといて、新たに全く違うUITableViewControllerを実装することにした

ただしstoryboardを使って。storyboard上でUITableViewControllerを配置して、ファイルと関連付け、後は元のソースコードをひとつひとつ追加して行く。状況を確認しながら追加して行ったのが、何故かこちらの方法では上の奇妙な現象は発生しない

そのままコードを補完していったところ、最終的には元のファイルと全く同じ内容になった。ただ違うのはプログラム的にTableViewを作っているか、Storyboardで初期化しているかの違いだけ

参考までに直った状態はこの通り

全くの謎です。どこかに原因があるのでしょうが、少し面倒でもStoryboardを使ってビューコントローラーの初期化をした方が無難かも知れません

しかしこのバグの調査に3日ぐらいハマったよね!! WTF!!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です