Из документации hidesBottomBarWhenPhed:
Если ДА, нижняя строка остается скрытой до тех пор, пока контроллер представления не извлечется из стека.
Это означает, что если вы неЧтобы знать, в каком порядке будут выталкиваться контроллеры представления, вам нужно, чтобы все контроллеры представления из стека имели для hidesBottomBarWhenPush значение false, за исключением topViewController.
Так что я делаю
- перед нажатием нового View Controller я установил его свойство hidesBottomBarWhenPhed по своему желанию
- также перед нажатием I, установив self.hidesBottomBarWhenPush, чтобы убедиться, что весь стек до следующего свойства будет иметь значение false
- перед выводом сообщения, вот когда я проверяю, должна ли отображаться панель вкладок, и обновляю ее шкурыBottomBarWhenPressed
Вот код для 1 и 2)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
self.hidesBottomBarWhenPushed = false
if (segue.identifier == "MyViewControllerWhoHidesTabBar") {
let viewController: MyViewControllerWhoShowsTabBar = segue.destinationViewController as! MyViewControllerWhoShowsTabBar
viewController.hidesBottomBarWhenPushed = true
}
// rest of implementation....
}
3) Я переопределил действие кнопки возврата на
func backButtonClick(sender:UIButton!) {
let viewControllers = self.navigationController!.viewControllers
if let vc = viewControllers[viewControllers.count-2] as? MyViewController {
if vc.isKindOfPageYouDontWannaShowTheTabBar() == true {
vc.hidesBottomBarWhenPushed = true
}
}
navigationController?.popViewControllerAnimated(true)
}