2015-08-18 2 views
0

По какой-то причине, мой нижний нав бар не скрывается от моего основного контроллера представления (синий экран в следующей раскадровке):СВИФТА: Nav Bar не скрывает

Main Storyboard

Я не хочу, панели вкладок для отображения на нижней части синего экрана, так что я положил в следующем коде в контроллере представления:

override func viewWillAppear(animated: Bool) { 
    self.navigationController?.setToolbarHidden(true, animated: animated) 
    self.navigationController?.setNavigationBarHidden(true, animated: animated) 
    super.viewWillAppear(animated) 
} 

override func viewWillDisappear(animated: Bool) { 
    self.navigationController?.setToolbarHidden(false, animated: animated) 
    self.navigationController?.setNavigationBarHidden(false, animated: animated) 
    super.viewWillDisappear(animated) 
} 

Это верхняя панель навигации не отображается (как и ожидалось), но нижняя полоса не скрывает , Он также отображать дважды на каждом экране после этого (см скриншот ниже):

App Screen

это потому, что у меня есть бар контроллер Tab в мой интерфейс строитель? Есть ли способ реализовать контроллер панели вкладок с четырьмя значками программным способом? Единственный экран, на который я действительно хочу включить контроллер панели вкладок, - это Table View.

+0

попробовать это http://stackoverflow.com/questions/30325292/reset-hidesbarsonswipe-in-swift/30325619#30325619 –

+0

@Memon, спасибо. Я попробовал это, и, к сожалению, панель вкладок все еще отображается внизу синего экрана. Кроме того, когда я сажусь на зеленый экран, нижняя панель вкладок отображается в течение одной секунды, а затем исчезает. Мне интересно, связано ли это с тем фактом, что я поместил контроллер панели вкладок в начале моего потока. Есть идеи? – SB2015

ответ

0

Использование hidesBottomBarWhenPushed

В контроллере представления с синим цветом фона:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let desVC: UIViewController = segue.destinationViewController as? UIViewController { 
     desVC.hidesBottomBarWhenPushed = true 
    } 
} 
+0

Спасибо @ zy.liu, я попробовал поставить следующее в viewWillAppear синего экрана (ViewController.swift), 'self.hidesBottomBarWhenPushed = true' self.navigationController? .pushViewController (self, animated: true), и это дало мне ошибка: Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «Нажатие одного и того же экземпляра контроллера диспетчера более одного раза не поддерживается» – SB2015

+0

Я добавил это, как вы предложили. Нижняя панель по-прежнему появляется на синем экране, и когда она переходит к следующему экрану (зеленый), сначала появляются две нижние полосы (такая же проблема показана на снимке экрана выше), а затем через одну секунду верхняя часть исчезает , Любые другие идеи о том, как это исправить? благодаря – SB2015