Не удается закрыть UIViewController после успешного входа - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь удалить UIViewController из стека NavigationStack после завершения входа в систему.

Экран входа в систему представляет собой UIViewController, представленный этой строкой кода

        let loginController = LoginController()
        self.present(loginController, animated: true, completion: nil)

И затем я запускаю этот код для входа пользователя через firebase.

        Auth.auth().signIn(withEmail: email, password: password) { (user, err) in
        if let err = err {
            print("Failed to sign in user with email", err )
        }

        //self.dismiss(animated: true, completion: nil)

        let userProfileVC = UserProfileController()
        let navController = UINavigationController(rootViewController: userProfileVC)

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

    }

Как видите, я пробовал метод pushViewController, а также пробовал комментированный метод self.dismiss? Ничто из того, что я делаю, кажется, не удаляет loginController UIView и возвращает меня на домашний экран UINavigationController. Кто-нибудь может мне помочь, большое спасибо.

Ответы [ 3 ]

0 голосов
/ 09 января 2019

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

navigationController?.popViewController(animated: true)

или

navigationController?.popToRootViewController(animated: true)

Первый метод избавится от самого последнего выдвинутого контроллера представления, а второй удалит все, кроме искомого «домашнего экрана» контроллеров навигации, который вы ищете.

0 голосов
/ 09 января 2019

Вы не можете нажать на конкретный контроллер, если на текущем контроллере присутствует какой-либо контроллер. так что вы можете использовать протокол делегата на контроллере, который является текущим контроллером. когда вызывается метод делегата, вы можете нажать на свой контроллер.

0 голосов
/ 09 января 2019

вы можете сделать как это

self.dismiss(animated: true, completion: {
let userProfileVC = UserProfileController()
        let navController = UINavigationController(rootViewController: userProfileVC)

        self.navigationController?.pushViewController(navController, animated: true)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...