Я создаю социальную сеть, которая позволяет пользователям переходить от одного профиля к другому, просматривая, за кем они следят.Для простоты я создал тестовый проект с двумя контроллерами представления: ViewController
и SecondViewController
.
. Каждый контроллер представления имеет кнопку, которая запускает IBAction для создания экземпляра следующего контроллера представления.Это представление затем помещается в стек навигации.Пользователь может делать это до тех пор, пока существует другой viewController, который нужно нажать.Но когда они начинают возвращаться / высовываться, это когда у меня возникают проблемы.
Вот ViewController:
class ViewController: UIViewController {
@IBOutlet weak var pageNumberLabel: UILabel!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "First"
setUp()
}
func setUp() {
print("Setup 1")
let navBarAppearance = self.navigationController!.navigationBar
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.shadowImage = UIImage()
navBarAppearance.barStyle = .black
navBarAppearance.isTranslucent = true
navBarAppearance.tintColor = .white
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
self.navigationController?.view.backgroundColor = UIColor.lightGray
}
@IBAction func pushSecondViewController() {
if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "secondVC") as? SecondViewController {
print("-")
self.navigationController?.pushViewController(vc, animated: true)
}
}
}
Вот SecondViewController:
class SecondViewController: UIViewController {
@IBOutlet weak var pageNumberLabel: UILabel!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "Second"
setUp()
}
func setUp() {
print("Setup 2")
let navBarAppearance = self.navigationController!.navigationBar
navBarAppearance.isTranslucent = false
navBarAppearance.barTintColor = .white
navBarAppearance.tintColor = .blue
navBarAppearance.barStyle = .black
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.blue]
}
@IBAction func pushFirstViewController() {
if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "firstVC") as? ViewController {
print("-")
self.navigationController?.pushViewController(vc, animated: true)
}
}
}
Когда выскочил SecondViewController, а ViewController -представлен, навигационный заголовок остается UIColor.blue.Однако, если я проведу пальцем от SecondViewController к ViewController, заголовок будет корректно менять цвета.
Почему это так?