2016-08-01 2 views
1

мое приложение начинается с контроллера панели вкладок, затем каждая вкладка идет с навигационным VC. Я хочу, чтобы скрыть панель вкладок в нижней части, когда я начинаю перемещаться во второй VC, а также изменить цвет панели навигации в оранжевый цвет, вот код, во 2-й ВК:Код в ViewWillAppear не работает, почему?

override func viewWillAppear(animated: Bool) { 
    var tabBarHide = self.tabBarController!.tabBar.hidden 
    print(tabBarHide) 
    if !tabBarHide { 
     tabBarHide = true 
    } 
    print(tabBarHide) 
    UINavigationBar.appearance().barTintColor = UIColor.init(red: 247/255, green: 119/255, blue: 0/255, alpha: 1) 

} 

Он делает распечатывают : false & true каждый раз, когда я перехожу к этому VC, но ничего не произошло с представлением. Это не работает. Зачем?

+0

Как вы присвоения значения 'self.tabBarController'? – Paulw11

+0

BTW, код "if! TabBarHide {tabBarHide = true}" может быть сокращен с помощью "tabBarHide = true", и это ясно. – FredericP

ответ

1

Вы не можете использовать прокси-сервер UIAppearance, чтобы изменить внешний вид объекта, который уже находится в иерархии представлений. Из UIAppearance documentation:

IOS относится появление меняется, когда вид входит в окно, он не меняет внешний вид тем, что уже находится в окне. Чтобы изменить внешний вид представления, находящегося в данный момент в окне, удалите представление из иерархии представлений и верните его обратно.

Вы можете изменить оттенок цвета активной панели навигации непосредственно:

self.navigationController?.navigationBar.tintColor = UIColor.init(red: 247/255, green: 119/255, blue: 0/255, alpha: 1) 

А почему ваша панель вкладок не скрывает, вы изменяете вашу локальную переменную, а не hidden свойство объекта панель вкладок. Вы хотите:

self.tabBarController?.tabBar.hidden = true 

Так что ваш viewWillAppear должно быть что-то вроде:

override func viewWillAppear(animated: Bool) { 

    super.viewWillAppear(animated) 

    self.tabBarController?.tabBar.hidden = true 
    self.navigationController?.navigationBar.tintColor = UIColor.init(red: 247/255, green: 119/255, blue: 0/255, alpha: 1) 

} 
+0

Кажется .navigationBar.tintColor - это цвет текста, я хочу изменить цвет фона, тогда я попробовал .navigationBar.backgroundColor, он не работает D; –

+0

'self.navigationController? .navigationBar.backgroundColor' работал для меня – Paulw11

Смежные вопросы