UITabBarControllerとUINavigationControllerでレイアウトをした際、 状況に寄ってUITableViewのセルがTabBarに隠れてしまうことがある。 ※最下段のセルがTabBarに隠れてしまった
はてなでこんな記事があったが、 UITabBarController + UINavigationController + UITableViewという画面構成のときに、次の画面でタブバーを消すようにしていると、前の画面に戻ってきたとき、テーブルの一番下が隠れる。 うーん、個人的にはコーディングでNIBを位置調整するのはバグを生みそうだし、MVCに反してる気がする ・・・って事で、何とかIBだけで対処方法を模索する。
ちなみに、画面構成は以下の階層(親から順)になっている
(1) Window <- UITabBarController - UIViewController(複数) (2) View <- Controller(Show Navigation Bar) - UIViewController (3) UITableView
まず、(1)のUIViewControllerは、レイアウトの高さは数値で設定できない。
ViewControllerのAttributesには、Wants Full ScreenやResize View From NIBのチェックがある。 Wants Full Screenにチェックすると、UITableViewのセルはきっちり収まった。 が・・・今度は(2)のNavigation ControllerのTop Barの上部が隠れてしまう。
Simulated User Interface Elementsでも色々調整してみる。 どうも上手くいかない。 というか、こいつの使い道がよくわからない。。。
(3)のレイアウトでUITableView単独で表示するのではなくUIView - UITableViewにしてやり、 UITableViewの高さをSize & Positioningで調整してみた。 (自分の場合、365pxくらいでした)
また、ViewSizeのAutoSizingがデフォルトで有効になっている。 赤い線をクリックすると無効になります。 この場合、オブジェクト内の縦線(高さ相当)を無効にしてみました。
多分、これで回避できるとは思うけど、各設定がちゃんと把握できてないのですっきりしないです。