I am trying to access a label in a viewcontroller from a model class so that I can change the UILabel text every time there is an error, however, every time I create the viewcontroller object inside the model class this error always appear. If i delete the object declaration then everything will work just fine. Can anyone tell me how to solve this problem? Your comment will be highly appreciate!
Model
import Foundation
import Firebase
class SignUp{
let db = Firestore.firestore()
var emailTextFieldCopy:UITextField!
var passwordTextFieldCopy:UITextField!
var fullnameTextFieldCopy:UITextField!
var usernameCopy:UITextField!
var errorText:String?
var eError:String?
let sup = SignUpVC() // here what caused the error
//MARK: - SignUp
func signUp(email:String, fullname:String, username:String, password:String){
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
if let error = error {
let errorText = error.localizedDescription
if errorText == "The email address is badly formatted."{
DispatchQueue.main.async {
self.errorEmail()
}
} else if errorText == "The password must be 6 characters long or more."{
DispatchQueue.main.async {
self.errorPassword()
}
}
print(errorText)
}else {
//self.clearTextFieldColor()
let userID = Auth.auth().currentUser?.uid
var add = self.db.collection("userinfo").document(userID!).setData(["fullname" : fullname,
"username": username])
}
}
}
ViewController
import UIKit
import Firebase
class SignUpVC: UIViewController{
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var fullNameTextField: UITextField!
@IBOutlet weak var userNameTextField: UITextField!
@IBOutlet weak var facebookBtn: UIButton!
@IBOutlet weak var signupBtn: UIButton!
@IBOutlet weak var errorText: UILabel!
let db = Firestore.firestore()
var signUp = SignUp()
var err:String = ""
override func viewDidLoad() {
super.viewDidLoad()
facebookBtn.layer.cornerRadius = facebookBtn.frame.height/5
signupBtn.layer.cornerRadius = signupBtn.frame.height/5
signUp.emailTextFieldCopy = emailTextField
signUp.passwordTextFieldCopy = passwordTextField
signUp.fullnameTextFieldCopy = fullNameTextField
signUp.usernameCopy = userNameTextField
}
override func viewWillAppear(_ animated: Bool) {
errorText.text = err
}
Model
import Foundation
import Firebase
class SignUp{
let db = Firestore.firestore()
var emailTextFieldCopy:UITextField!
var passwordTextFieldCopy:UITextField!
var fullnameTextFieldCopy:UITextField!
var usernameCopy:UITextField!
var errorText:String?
var eError:String?
let sup = SignUpVC() // here what caused the error
//MARK: - SignUp
func signUp(email:String, fullname:String, username:String, password:String){
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
if let error = error {
let errorText = error.localizedDescription
if errorText == "The email address is badly formatted."{
DispatchQueue.main.async {
self.errorEmail()
}
} else if errorText == "The password must be 6 characters long or more."{
DispatchQueue.main.async {
self.errorPassword()
}
}
print(errorText)
}else {
//self.clearTextFieldColor()
let userID = Auth.auth().currentUser?.uid
var add = self.db.collection("userinfo").document(userID!).setData(["fullname" : fullname,
"username": username])
}
}
}
ViewController
import UIKit
import Firebase
class SignUpVC: UIViewController{
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var fullNameTextField: UITextField!
@IBOutlet weak var userNameTextField: UITextField!
@IBOutlet weak var facebookBtn: UIButton!
@IBOutlet weak var signupBtn: UIButton!
@IBOutlet weak var errorText: UILabel!
let db = Firestore.firestore()
var signUp = SignUp()
var err:String = ""
override func viewDidLoad() {
super.viewDidLoad()
facebookBtn.layer.cornerRadius = facebookBtn.frame.height/5
signupBtn.layer.cornerRadius = signupBtn.frame.height/5
signUp.emailTextFieldCopy = emailTextField
signUp.passwordTextFieldCopy = passwordTextField
signUp.fullnameTextFieldCopy = fullNameTextField
signUp.usernameCopy = userNameTextField
}
override func viewWillAppear(_ animated: Bool) {
errorText.text = err
}