Navigation Controller и TableView: NavBar Скрывается после скрытого = true один раз - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть UITableView, встроенный в NavigationController.Каждая ячейка ссылается на более крупный информационный ViewController.В целях пользовательского интерфейса я скрываю панель навигации в TableView и показываю ее в InfoViewController.

Проблема, с которой я сталкиваюсь, заключается в следующем: при загрузке приложения NavBar успешно скрывается в TableView.Когда я в первый раз подключаюсь к ячейке и открываю InfoViewController, NavBar возвращается, как и ожидалось.Я возвращаюсь из этого VC в TableView.Опять же, NavBar скрыт, как и ожидалось.Если я нажму на другую ячейку, NavBar не отображается должным образом.ПРИМЕЧАНИЕ. Это происходит даже тогда, когда я удаляю любой код, чтобы скрыть панель навигации.

Вот соответствующие фрагменты кода:

TableViewController (в ViewDidLoad ()):

self.navigationController?.isNavigationBarHidden = true

InfoViewController:

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.isHidden = false
    super.viewWillAppear(animated)
}

Почему это сработало бы в первый раз, а не во второй.Любая помощь приветствуется!

Для уточнения:

Приложение открывается в TableView:

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

Я нажимаю в TableViewCell, чтобы перейти кInfoViewController:

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

Я нажимаю «Назад», чтобы вернуться к TableViewController.NavBar все еще скрыт.Я нажимаю на ту же ячейку:

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

РЕДАКТИРОВАНИЕ: испорчен код TableViewController.Поставьте = false вместо = true.

Кроме того, у меня есть еще одна мысль, пожалуйста, кто-нибудь проверит это для меня.TableViewController находится внутри UIContainerView.Это почти как если бы я нажал «Назад», я выходил из потока NavigationController и не мог вернуться в него.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Просто снова скрыть панель навигации, когда контроллер представления появится снова,

сделать ниже код в tableViewController:

override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.navigationController?.isNavigationBarHidden = true }

0 голосов
/ 08 февраля 2019

Пожалуйста, попробуйте этот код, он отлично работает для сокрытия navigationBar

TableViewController

class TableViewController: UITableViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.isNavigationBarHidden = true
    }
}

InfoViewController

class InfoViewController : UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.isNavigationBarHidden = false
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        self.navigationController?.isNavigationBarHidden = true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...