2016-02-21 9 views
1

Я пытаюсь изменить цвет своей панели навигации в представлении, которое содержит UISearchController. Я ранее устанавливал цвет своих навигационных баров для всего приложения в своем приложении appDelegate, но я хочу, чтобы этот вид nav bar имел другой цвет. Проблема в том, что я не знаю, какую функцию разместить код, чтобы он переопределял код appDelegate. Например, viewDidLoad и viewWilAppear не меняют цвет при первом загрузке представления, только после того, как я вхожу и отменю searchController. Какую функцию я должен разместить следующим образом?Невозможно изменить цвет панели навигации

UINavigationBar.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1) 
+0

Try в viewDidLayoutSubviews() –

+0

Не работает @GuyDaher – rohaldb

ответ

4

Есть два способа сделать это. Вы можете либо изменить прокси-сервер внешнего вида, который вы создали в AppDelegate для всего приложения, либо изменить индивидуальную панель навигации для конкретного экрана.

Когда вы отклоняете представление - вам необходимо сбросить barTintColor в viewWillDisappear.

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

    // Set to new colour for whole app 
    UINavigationBar.appearance().barTintColor = UIColor.blueColor() 

    // Or, Set to new colour for just this navigation bar 
    self.navigationController?.navigationBar.barTintColor = UIColor.blueColor() 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 

    //Revert to old colour, whole app 
    UINavigationBar.appearance().barTintColor = UIColor.redColor() 

    //Revert to old colour, just this navigation bar 
    self.navigationController?.navigationBar.barTintColor = UIColor.redColor() 
} 
+0

большое спасибо – rohaldb

0

Вместо того, чтобы изменить цвет панели навигации непосредственно, вы должны изменить цвет бара навигационного контроллера в viewWillAppear и изменить его обратно, когда вы закроете вид.