TimF11
TimF11

Reputation: 1

Use of undeclared type 'HomeViewController'

Function moveToHome gives error when stating the viewcontroller class. Use of undeclared type 'HomeViewController'. I set the class of the view controller to HomeViewController but it is not being recognized.

import Foundation
import UIKit
import Firebase
import SwiftKeychainWrapper
import FirebaseAuth
import FirebaseFirestore

class SignUpEmail: UIViewController {

    @IBOutlet weak var Email: UITextField!
    @IBOutlet weak var Password: UITextField!
    @IBOutlet weak var Firstname: UITextField!
    @IBOutlet weak var Lastname: UITextField!
    @IBOutlet weak var City: UITextField!
    @IBOutlet weak var Street: UITextField!
    @IBOutlet weak var Gender: UITextField!
    @IBOutlet weak var SignupButton: UIButton!
    @IBOutlet weak var errorLAbel: UILabel!




    var userUid: String!
    override func viewDidLoad() {
        super.viewDidLoad()
        SignupButton.layer.cornerRadius = 15
        errorLAbel.alpha = 0


}
   // Check fields, If everything is correct returns Nil otherwise returns error.
    func validateFields() -> String? {
        if Email.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            Password.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            Firstname.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            Lastname.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            City.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            Street.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
            Gender.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" {

            return "Please fill in all fields."
        }
        // Check if password is secure
        let cleanedPassword = Password.text!.trimmingCharacters(in: .whitespacesAndNewlines)

            if Utilities.isPasswordValid(cleanedPassword) == false {
                // Password isn't secure enough
                return "Please make sure your password is at least 8 characters, contains a special character and a number."
        }
        return nil
    }

    @IBAction func SignupTapped(_ sender: Any) {
        //Validate
        let error = validateFields()

        if error != nil {
            // Something is wrong with the fields

            showError(error!)
        }
        else {
              // Create User
            // Create clean versions of data
            let lastname = Lastname.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let firstname = Firstname.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let email = Email.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let password = Password.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let city = City.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let street = Street.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let gender = Gender.text!.trimmingCharacters(in: .whitespacesAndNewlines)

            Auth.auth().createUser(withEmail: email, password: password) { (result, err) in
                //check for errors
                if err != nil {
                    // There was an error creating the user
                    self.showError("Error Creating User")
                }
                else {
                    //User was creating successfully now store
                    let db = Firestore.firestore()

                    db.collection("users").addDocument(data: ["firstname":firstname, "lastname":lastname, "City": city, "Street": street, "Gender":gender, "uid": result!.user.uid]) { (Error) in

                        if error != nil {
                        self.showError("Error saving user data")

                                       }
                }
                // Move to homescreen
                    self.moveToHome()

            }
        }




}
}
    func showError(_ message:String) {

           errorLAbel.text = message
           errorLAbel.alpha = 1
    }
        func moveToHome() {

        let storyboard = UIStoryboard(name: "Main.storyboard", bundle: nil)
        let homeViewController = storyboard?.instantiateViewController(identifier: "HomeVC") as? HomeViewController  //This part gives error

        view.window?.rootViewController = homeViewController
        view.window?.makeKeyAndVisible()
    }

}

(Ignore had to add extra text to be able to post)

Upvotes: 0

Views: 63

Answers (1)

Nguyen Hoan
Nguyen Hoan

Reputation: 1693

try:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

uses "Main" instead of "Main.storyboard"

and make sure that the StoryboadID has been set
enter image description here

Upvotes: 1

Related Questions