Я новичок в Swift. Я работаю над приложением. Я использую firebase для регистрации и входа пользователя в свое приложение. вот мой код входа в систему: -
@IBAction func onClickLogin(_ sender: Any)
{
let email = Validation.shareValidator.isValidEmail(email: txtEmail.text, view: viewContainerEmail)
let password = Validation.shareValidator.isValidPassword(password: txtPassword.text, view: viewContainerPassword)
if email != "success"
{
CustomAlert.shareAlert.alertSetUp(title: "Email Field", subTitle: email, boldTitle: "Invalid Email")
}
else if password != "success"
{
CustomAlert.shareAlert.alertSetUp(title: "Password Field", subTitle: password, boldTitle: "Invalid Password")
}
else
{
Auth.auth().signIn(withEmail: txtEmail.text!, password: txtPassword.text!) { (result, error) in
if error != nil
{
CustomAlert.shareAlert.alertSetUp(title: "Login Error", subTitle: error!.localizedDescription, boldTitle: "Login Error")
}
else
{
self.btnLogin.startAnimate(spinnerType: SpinnerType.circleStrokeSpin, spinnercolor: UIColor.white, spinnerSize: 20, complete: {
self.btnLogin.backgroundColor = UIColor.green
let defaults = UserDefaults.standard
defaults.set(true, forKey: "isLogin")
defaults.set(result?.user.uid, forKey: "uid")
defaults.set(self.txtEmail.text!, forKey: "email")
let vc = self.storyboard?.instantiateViewController(withIdentifier: "RootTabBarC") as! RootTabBarC
self.navigationController?.pushViewController(vc, animated: true)
})
}
}
}
}
вот мой код регистрации: -
@IBAction func onClickSignUp(_ sender: Any)
{
Auth.auth().createUser(withEmail: txtEmail.text!, password: txtPassword.text!) { (result, error) in
if error != nil
{
CustomAlert.shareAlert.alertSetUp(title: "Registration Error", subTitle: error!.localizedDescription, boldTitle: "Registration Error")
}
else
{
let uid = result?.user.uid
let ref = Database.database().reference(withPath: "user").child(uid!)
ref.setValue(["name" : self.txtName.text!, "email" : self.txtEmail.text!, "password" : self.txtPassword.text!, "mobile" : "", "recipeExpert" : "", "bio" : "", "profileImage" : ""])
self.btnSignUp.startAnimate(spinnerType: SpinnerType.circleStrokeSpin, spinnercolor: UIColor.white, spinnerSize: 20, complete: {
self.btnSignUp.backgroundColor = UIColor.green
let defaults = UserDefaults.standard
defaults.set(true, forKey: "isLogin")
defaults.set(result?.user.uid, forKey: "uid")
defaults.set(self.txtEmail.text!, forKey: "email")
let vc = self.storyboard?.instantiateViewController(withIdentifier: "RootTabBarC") as! RootTabBarC
self.navigationController?.pushViewController(vc, animated: true)
})
}
}
вот мой код выхода из системы: -
@IBAction func onClickLogOut(_ sender: Any)
{
do
{
try Auth.auth().signOut()
UserDefaults.standard.removeObject(forKey: "isLogin")
UserDefaults.standard.removeObject(forKey: "uid")
UserDefaults.standard.removeObject(forKey: "email")
UserDefaults.standard.synchronize()
}
catch let err
{
print(err.localizedDescription)
}
let appDel = UIApplication.shared.delegate as! AppDelegate
let vc = storyboard?.instantiateViewController(identifier: "LoginSignUpVC") as? LoginSignUpVC
let navVc = UINavigationController(rootViewController: vc!)
appDel.window?.rootViewController = navVc
appDel.window?.makeKeyAndVisible()
self.parent?.navigationController?.popToRootViewController(animated: true)
}
когда я я запускаю мое приложение, оно работает нормально, но когда я закрываю вкладку последних приложений моего приложения на симуляторе, снова открываю и пытаюсь выйти, но оно не возвращается к моему LoginSignUpV c root просмотр контроллера . существует проблема с self.parent? .navigationController? .popToRootViewController (animated: true)
любая помощь будет оценена, спасибо.