UITabBarControllerでUITableViewが隠れる

2010/09/16

UITabBarControllerとUINavigationControllerでレイアウトをした際、 状況に寄ってUITableViewのセルがTabBarに隠れてしまうことがある。 iphone ※最下段のセルがTabBarに隠れてしまった

はてなでこんな記事があったが、 UITabBarController + UINavigationController + UITableViewという画面構成のときに、次の画面でタブバーを消すようにしていると、前の画面に戻ってきたとき、テーブルの一番下が隠れる。 うーん、個人的にはコーディングでNIBを位置調整するのはバグを生みそうだし、MVCに反してる気がする ・・・って事で、何とかIBだけで対処方法を模索する。

ちなみに、画面構成は以下の階層(親から順)になっている

画面構成

(1) Window <- UITabBarController - UIViewController(複数) (2) View <- Controller(Show Navigation Bar) - UIViewController (3) UITableView

Wants Full ScreenやResize View From NIB

まず、(1)のUIViewControllerは、レイアウトの高さは数値で設定できない。 iphone

ViewControllerのAttributesには、Wants Full ScreenやResize View From NIBのチェックがある。 iphone Wants Full Screenにチェックすると、UITableViewのセルはきっちり収まった。 が・・・今度は(2)のNavigation ControllerのTop Barの上部が隠れてしまう。

Simulated User Interface Elements

Simulated User Interface Elementsでも色々調整してみる。 iphone どうも上手くいかない。 というか、こいつの使い道がよくわからない。。。

UITableView単独をやめ、ViewにAutoSizingを設定する

(3)のレイアウトでUITableView単独で表示するのではなくUIView - UITableViewにしてやり、 UITableViewの高さをSize & Positioningで調整してみた。 (自分の場合、365pxくらいでした)

また、ViewSizeのAutoSizingがデフォルトで有効になっている。 iphone 赤い線をクリックすると無効になります。 この場合、オブジェクト内の縦線(高さ相当)を無効にしてみました。

多分、これで回避できるとは思うけど、各設定がちゃんと把握できてないのですっきりしないです。