2009/11/17

iPhone Navigation Bar + Tab Bar + hidesBottomBarWhenPushed

タブとナビゲーションビューを使っているとき、ナビゲーションで進んだ先ではタブバーを隠したいときに使えるポロパティにhidesBottomBarWhenPushedがある。文字通り別のビューがプッシュされたら下にあるバーを隠す設定をするためのプロパティ。アクセサを使ってこんな感じで設定する。
[SomeViewController setHidesBottomBarWhenPushed:YES];
[self.navigationController pushViewController:SomeViewController animated:YES];

はまりどころ。hidesBottomBarWhenPushedは呼び出す側のコントローラで設定しておかないと行けない。上の例でいうと。SomeViewControllerのdidViewLoadで設定することができるが、これだとちょっとよくない。
didViewLoadで設定するとSomViewControllerがPushされた場合、ボトムバーが消えない。SomeViewController以降のpushされたビューで初めてボトムバーが消える。(SomeViewControllerを再描写して初めて消えているっぽい)。多分didViewLoadでは1手遅いんだと思う。didViewLoadより前でhidesBottomBarWhenPushedを設定しないといけない。つまりSomeViewControllerが呼ばれた時点でバーを隠す場合は、上のサンプルコードのように呼び出し側で設定する。