※本記事は、旧ブログからの再掲です。
ViewControllerに複数の異なるビューを配置し、その1つにtableViewを配置したところ、思った通りに描画されなかった時の備忘録です。
上のImageViewとの間隔は10ptに設定してあるのに、それ以上の間隔で描画され、テーブルセルは5個なのでその分の高さを設定してあるのに、セル4までしか表示されていません。
セルの上に何かありそうなので、背景に色を付けてみました。
黄色い部分がセル1の上にあるためにセルが4つ分まで表示されなかったようです。
これは調べてみたらセクションヘッダらしいことが分かりました。
セクションヘッダを表示する必要はないので、下記2つのdelegateメソッドを実装することで対処できました。
– (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
– (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/************************************************************************** * セクションのヘッダビューを返却 **************************************************************************/ - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { return nil; } /************************************************************************** * セクションのヘッダの高さを返却 **************************************************************************/ - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return tableView.sectionHeaderHeight; } |
またフッタについても呼ばれていたので同様に実装しました。
– (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
– (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/************************************************************************** * セクションのフッタビューを返却 **************************************************************************/ - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { return nil; } /************************************************************************** * セクションのフッタの高さを返却 **************************************************************************/ - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return tableView.sectionFooterHeight; } |
tableView.sectionHeaderHeight = 1.0f
tableView.sectionFooterHeight = 1.0f
に設定したので最終的には以下のように表示されるようになりました。