2017-02-05 6 views
2

У меня есть контроллеры представлений с двумя различными навигационными панелями. Каждая панель навигации имеет разный цвет.Цвет панели навигации не сохраняется

VC1 and VC2

Если я перехожу от VC1 к VC2 я буду видеть разные цвета, но если движение назад я буду видеть в цвете VC1 навигационного бара с VC2.

View Controller 1 Returned

Так навигационная панель цвет из VC1 не спасает правильно

VC1:

import UIKit 

class TableViewController_1: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController?.navigationBar.barTintColor = UIColor(red: 56.0/255.0, green: 208.0/255.0, blue: 125.0/255.0, alpha: 1.00) 

     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 

     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

VC2:

import UIKit 

class TableViewController_2: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController?.navigationBar.barTintColor = UIColor(red: 105.0/255.0, green: 28.0/255.0, blue: 56.0/255.0, alpha: 1.00) 

     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 

     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

Как сделать фиксированную навигацию бар цвета в VC1 ? Спасибо за помощь!

ответ

1

Вместо того, чтобы изменить цвет панели навигации в viewDidLoad, сделайте это в viewWillAppear:

VC1

override func viewWillAppear(_ animated: Bool) { 
     self.navigationController?.navigationBar.barTintColor = UIColor(red: 56.0/255.0, green: 208.0/255.0, blue: 125.0/255.0, alpha: 1.00) 
    } 

VC2

override func viewWillAppear(_ animated: Bool) { 
     self.navigationController?.navigationBar.barTintColor = UIColor(red: 105.0/255.0, green: 28.0/255.0, blue: 56.0/255.0, alpha: 1.00) 
    } 
+0

Спасибо !!! Работает!!! –

1

Если подарок от VC1 к VC2, у них есть другой контроллер навигации. Таким образом, не должно быть никаких проблем с цветом навигационных панелей. Потому что они используют разные навигационные системы. Однако, если вы нажмете от VC1 до VC2, и когда вы вернетесь с VC2 на VC1, вы должны установить цвет навигационной панели VC1 в методе viewWillAppear. Потому что, когда вы возвращаетесь в VC1, он работает непрерывно с viewWillAppear, а не с viewDidLoad из-за VC1, уже созданного в памяти.

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