TabBarController#viewControllersにNavigationControllerを割り当てることがあります。その場合、最初の画面ではタブを表示したいが、次の画面ではタブを隠したい場合があります。
そういう時は、Tabbarを隠したい画面のViewControllerで以下のように設定します。
override func awakeFromNib() {
super.awakeFromNib()
self.hidesBottomBarWhenPushed = true
}
viewDidLoadだとうまくいかないので、awakeFromNibで行うこと。viewがloadされる前に、隠すべきなのかどうかの判定が行われるようなので。