Изменение detailNavigationBar, но также изменение rootNavigationBar

У меня проблема при pushViewController из MainViewController в DetailViewController. Моя панель навигации в MainViewController белая, но когда я меняю элементы navigationBar в DetailViewController на белый или backgrondColor, чтобы очистить, он также изменяется в MainViewController. Это похоже на то, что вид такой же, но нажимает только фон ...

Главный вид  введите здесь описание изображения

Подробный вид  введите здесь описание изображения

Снова основной вид  введите описание изображения здесь

Я программно пишу свое приложение (без раскадровки). AppDelegate таков:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    /********** Storyboard Config **********/
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    window?.rootViewController = TabBarController()

    return true
}

TabBarController таков:

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

    // Create Tab MainViewController
    let mainNavigationController = MainViewController(collectionViewLayout: UICollectionViewFlowLayout())
    mainNavigationController.title = "Main"
    let mainController = UINavigationController(rootViewController: mainNavigationController)
    mainController.title = "Main"
    mainController.tabBarItem.image = UIImage(named: "UITabBarBookmarksTemplate")
    mainController.tabBarItem.selectedImage = UIImage(named: "UITabBarBookmarksTemplateSelected")

    // Create Tab UserViewController
    let userNavigationController = UserViewController(collectionViewLayout: UICollectionViewFlowLayout())
    userNavigationController.title = ""
    let userController = UINavigationController(rootViewController: userNavigationController)
    userController.title = "Profile"
    userController.tabBarItem.image = UIImage(named: "UITabBarContactsTemplate")
    userController.tabBarItem.selectedImage = UIImage(named: "UITabBarContactsTemplateSelected")

    viewControllers = [mainController, userController]

}

Код pushViewController для MainViewController:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let layout = UICollectionViewFlowLayout()
    let controller = DetailViewController(collectionViewLayout: layout)
    controller.data = cloudDatas?[indexPath.item]

    navigationController?.pushViewController(controller, animated: true)
}

И единственное, что я меняю в DetailViewController, это следующее:

// Translucent Navigation Bar
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    self.navigationController?.navigationBar.tintColor = UIColor.white

С помощью этого кода панель навигации в контроллере MainView меняется с белого на clearColor, когда я перехожу к DetailViewController и возвращаюсь к контроллеру MainView ...

????????‍♂️

В чем проблема?? Пожалуйста помоги!

Спасибо!




Ответы (1)


Используйте следующее в DetailViewController:

 self.navigationController?.navigationBar.isHidden = true

Вместо этого:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.tintColor = UIColor.white

И добавьте это в MainViewController, viewWillAppear:

self.navigationController?.navigationBar.isHidden = false
person Vini App    schedule 13.10.2017
comment
Спасибо за ответ, но кнопки на нем DetailViewController не отображаются (потому что панель навигации скрыта), а при возврате в MainView панель навигации выглядит полупрозрачной, как на картинках выше ... - person rjgodoy; 14.10.2017