#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
}