Кнопка «Назад» переводит меня на неверный вид контроллера - PullRequest
0 голосов
/ 09 июня 2019

У меня есть раскадровка, с которой я работаю, она настроена так:

Экран входа в систему -> Контроллер панели вкладок -> Контроллер навигации -> Экран 1 Переход к экрану 2 Переход к экрану 3.

При первом входе в систему все прекрасно работает. Экран 1 переходит к экрану 2, экран 2 переходит к экрану 3, затем вы можете использовать кнопку «Назад» для возврата к экрану 2, а затем к экрану 1. Однако у меня есть функция «Выход» (код ниже, хотя я не думаю, что это относится к моей проблеме) и после того, как я "выйду из системы", я перехожу на экран входа в систему (первый экран в последовательности выше). Когда я снова войду в систему, перейдите к Экрану 2 или Экрану 3, нажатие кнопки «Назад» во время перехода возвращает меня к экрану входа в систему, а не к предыдущему Экрану 1 или Экрану 2.

@objc func logOut(){
    let homeView = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
    self.navigationController?.pushViewController(homeView, animated: true)
    homeView.navigationItem.hidesBackButton = true
}

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Я не уверен, что создание экземпляра LoginViewController является лучшей практикой, поскольку оно уже есть в вашем стеке навигации. Я бы порекомендовал сделать что-то вроде этого:

@objc func logOut(){
    self.navigationController?.popToRootViewControllerAnimated(true)
}

Это удалит все контроллеры представлений из стека навигации и предоставит вам корневой контроллер представлений (LoginViewController)

0 голосов
/ 09 июня 2019

Обновлено для всех, кому интересно.Опция pushViewController была проблемой.Если я просто использую «подарок», у меня больше нет этой проблемы.Вот мой обновленный код выхода из системы:

@objc func logOut(){
    let homeView = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
    self.navigationController?.present(homeView, animated: true)
    homeView.navigationItem.hidesBackButton = true

}

...