ios swift — фон элемента навигации становится черным при возврате к экрану, где панель навигации скрыта

#ios #swift #uinavigationcontroller #uinavigationbar #uinavigationitem

#iOS #swift #uinavigationcontroller #uinavigationbar #uinavigationitem

Вопрос:

Я подумал, что показ скриншота поможет немного лучше понять проблему.

Итак, контекст следующий:

Я нахожусь в контроллере навигации, на экране настроек приложения (в котором есть элемент навигации), и когда мы нажимаем кнопку «Назад», мы возвращаемся к главному экрану приложения (для которого я скрыл панель навигации в viewWillAppear главного экрана, потому что я сам создаю пользовательский вид заголовка).

Как только я нажимаю на кнопку «Назад», панель навигации немедленно исчезает, и я вижу, что вместо нее появляется черный прямоугольник, пока анимация для отображения главного экрана не будет завершена.

Вы знаете, как я могу избежать появления этого черного прямоугольника?

Надеюсь, вопросы имеют смысл.

Скриншоты

Вот экран начальных настроек:

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

Это происходит, когда мы нажимаем кнопку «Назад»… справка: D

Я знаю, что этот фрагмент кода, скорее всего, ответственен за ошибку, но мне абсолютно необходимо, чтобы панель навигации была скрыта на предыдущем экране.

переопределение функции viewWillAppear(_ animated: Bool) {

 navigationController?.isNavigationBarHidden = true
  

}

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

Комментарии:

1. Вы пробовали анимированный метод скрытия панели навигации setNavigationBarHidden(_ hidden: Bool, animated: Bool) ? Смотрите документы

2. Я рад, что это помогло Эдуарду 🙂 Кстати, когда вы обнаружите, что комментарий отвечает на вопрос, вы можете попросить комментатора опубликовать его в качестве ответа и принять это. Просто идея, но на этот раз не беспокойтесь об этом.

3. Спасибо. Ах да, извините за это. Пожалуйста, опубликуйте это в качестве ответа 🙂 Я сразу удаляю свой. Я новичок в стеке в целом, все еще изучаю обычную практику. Еще раз спасибо.

Ответ №1:

Вы пробовали анимированный метод скрытия панели навигации setNavigationBarHidden(_ hidden: Bool, animated: Bool) ?

Ответ №2:

Для Swift3.0

Добавьте приведенный ниже код в Первый ViewController

 override func viewWillAppear(_ animated: Bool) {
     super.viewWillAppear(true)
     navigationController?.setNavigationBarHidden(true, animated: animated)
}
  

Добавьте приведенный ниже код во Второй ViewController

 func backButtonPressed() {
    navigationController?.setNavigationBarHidden(false, animated: false)
    navigationController?.popViewController(animated: true)
}
  

Ответ №3:

Добавьте приведенный ниже код во второй ViewController

цвет может соответствовать вашему заказу

  override func viewWillAppear(_ animated: Bool) {
              self.navigationController?.view.backgroundColor = UIColor.white


        }