在完成登录后,我正在努力从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主屏幕。谁能帮助我,非常感谢。
答案 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)
当当前控制器上存在任何控制器时,您不能推到特定控制器。因此您可以在当前的控制器上使用协议委托。当调用委托方法时,您可以推送到控制器。