成功登录后无法关闭UIViewController

时间:2019-01-09 09:05:20

标签: ios swift uiviewcontroller

在完成登录后,我正在努力从NavigationStack中关闭UIViewController。

登录屏幕是一个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 :(得分:1)

您可以这样做

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

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

答案 1 :(得分:1)

您可能需要打印视图堆栈并将其显示给我们,以便更好地理解,但是请尝试以下方法之一:

navigationController?.popViewController(animated: true)

navigationController?.popToRootViewController(animated: true)

第一种方法将处理最近推送的视图控制器,而第二种方法将删除您要查找的导航控制器(主屏幕)以外的所有内容。

答案 2 :(得分:1)

当当前控制器上存在任何控制器时,您不能推到特定控制器。因此您可以在当前的控制器上使用协议委托。当调用委托方法时,您可以推送到控制器。