登录/注销时如何在后视显示控制器中自动更新UILabels?



当我登录和退出正在构建的应用程序时,我在自动更新UILabels时遇到问题。就像如果我关闭并重新打开RearViewRevealController (MenuVC),我可以让他们更新.但是有没有办法自动更新它们,而无需在用户每次登录/注销时重新打开菜单?

菜单VC

override func viewDidAppear(_ animated: Bool) {
if let user = Auth.auth().currentUser , !user.isAnonymous {
// We are logged in
logInOutBtn.setTitle("Logout", for: .normal)
if UserService.userListener == nil {
UserService.getCurrentUser {
self.fullNameTxt.text = UserService.user.fullName
self.emailTxt.text = UserService.user.email
}
}
} else {
logInOutBtn.setTitle("Login", for: .normal)
fullNameTxt.text = "Sign in or create an account"
emailTxt.text = "to continue"
}
}

用户服务

func getCurrentUser(completion: @escaping () -> ()) {
guard let authUser = auth.currentUser else { return }
let userRef = db.collection("users").document(authUser.uid)
userListener = userRef.addSnapshotListener({ (snap, error) in
if let error = error {
debugPrint(error.localizedDescription)
return
}
guard let data = snap?.data() else { return }
self.user = User.init(data: data)
completion()
})
}

可以使用UserDefault更新标签。

label.text = UserDefaults.standard.value(forKey: UserDefaultKey.name)

然后,例如,可以在登录时将用户名保存到UserDefault。

UserDefaults.standard.set(username, forKey: UserDefaultKey.name)

注销时,将其值设置为 "。

最新更新