В Swift панель навигации исчезает и больше не возвращается - PullRequest
3 голосов
/ 09 апреля 2019

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

Я делаю весь свой код программно без использования Interface Builder.

Я пробовал список приведенных ниже кодов, но ни один из них не работал.

  override func viewDidLoad() {
    super.viewDidLoad()
self.navigationController?.setNavigationBarHidden(false, animated: false)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "backimg"), style: .plain, target: self, action: #selector(backTapped))

    let webV:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
    webV.loadRequest(NSURLRequest(url: NSURL(string: "https://*****************.com")! as URL) as URLRequest)
    webV.delegate = self;
    self.view.addSubview(webV)
    self.navigationController?.navigationBar.isHidden = false
    navigationController?.isNavigationBarHidden = false
}

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

@objc func backTapped(_ sender: Any){
    self.dismiss(animated: true, completion: nil)

}

Я пытаюсь отодвинуть контроллер вида от целевой функции кнопки следующим образом:

  @objc func parkingTimerTapped(_ sender: Any) {
    let pp = ParkingModeScheduleView()

    self.present(pp, animated: true, completion: nil)
    print("Parking Timer Tapped")
 }

Я также уже пытался выдвинуть контроллер вида, используя следующую команду:

  self.navigationController?.pushViewController(pp, animated: true)

Я что-то делаю не так или что-то не так?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

вам нужно добавить ваш parkingModeScheduleview в UINavigation контроллер, как это

@objc func parkingTimerTapped(_ sender: Any) {
    let pp = ParkingModeScheduleView()
    let navigation = UINavigationController(rootViewController: pp)
    self.present(navigation, animated: true, completion: nil)
    print("Parking Timer Tapped")
 }
1 голос
/ 09 апреля 2019

Использование self.present(pp, animated: true, completion: nil) показывает ваш новый контроллер представления как модальный, так что он вообще не является частью стека навигации, и поэтому панель навигации отсутствует.

Я бы рекомендовал попробовать с self.navigationController?.pushViewController(pp, animated: true), но сначала проверьте, не является ли self.navigationController не nil по какой-то причине. Также удалите все скрытые связанные методы навигации из вашего ParkingModeScheduleView

...