画面遷移したときに下部のタブバーを一時的に消す

ナビゲーションコントローラをタブバーと組み合わせて使っている時、プッシュ遷移した先の画面ではタブバーを消して全画面表示したいケースはあります。設定が終わるまでタブバーによる遷移を避けたいときなどがそうです。遷移先から戻ってきたときには、またタブバーを表示する動作とのセットです。

その場合、「遷移元のビューコントローラ」で、「自分のhidesBottomBarWhenPushedプロパティ」をtrueにセットします。これで

  • 遷移先に移動するときにタブバーが隠れる
  • 遷移先から戻ってくるときにタブバーが再表示される

がまとめて実現できます。prepareForSegue()で書いた場合の例を下に載せます。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    switch segue.identifier {
    case "ToDetailView"?:
        hidesBottomBarWhenPushed = true
        // tabBarController?.hidesBottomBarWhenPushed = true // NG。遷移先のviewがサイズ調整されない
    default:
        break
    }
}

ありがちなのは、遷移元ビューコントローラのhidesBottomBarWhenPushedプロパティを操作するのではなく、タブバーコントローラのプロパティを操作してしまうミスです。これだと、遷移先画面でベースのビューがサイズ調整されないまま表示され、使いづらくなってしまいます。

気をつけましょう(自分)