从xCode上的swift/编码开始,在什么时候我可以使用segue将我带到我的homeVC?

从xCode上的swift/编码开始,在什么时候我可以使用segue将我带到我的homeVC?,swift,xcode,button,segue,Swift,Xcode,Button,Segue,当我无法切换到一个新的VC时,我正在跟随一个教程 所讨论的序列:self.performsgue(带有标识符:“goHomeVC”,发送者:self) 我试图在@IBAction didTapButton函数中使用它,但它不起作用,我想不出还能把它放在哪里。点击该按钮后,当用户登录时,屏幕上的所有内容都会隐藏,但我想让它转到homeVC import UIKit import FirebaseAuth class LoginVC: UIViewController, UITextFieldDe

当我无法切换到一个新的VC时,我正在跟随一个教程

所讨论的序列:
self.performsgue(带有标识符:“goHomeVC”,发送者:self)

我试图在
@IBAction didTapButton
函数中使用它,但它不起作用,我想不出还能把它放在哪里。点击该按钮后,当用户登录时,屏幕上的所有内容都会隐藏,但我想让它转到homeVC

import UIKit
import FirebaseAuth

class LoginVC: UIViewController, UITextFieldDelegate {


    private let companyLogo = UIImageView(image: UIImage(named: "Company Logo White.png")!);
    private let signInLogo = UIImageView(image: UIImage(named: "SignInText.png")!);


    private let emailField: UITextField = {
        let emailField = UITextField()
        emailField.placeholder = "Email Address"
        emailField.layer.borderWidth = 1
        emailField.autocapitalizationType = .none
        emailField.layer.borderColor = UIColor.white.cgColor
        emailField.backgroundColor = .white
        emailField.leftViewMode = .always
        emailField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 0))
        return emailField
    }()

    private let passwordField: UITextField = {
        let passwordField = UITextField()
        passwordField.placeholder = "Password"
        passwordField.layer.borderWidth = 1
        passwordField.isSecureTextEntry = true
        passwordField.layer.borderColor = UIColor.white.cgColor
        passwordField.backgroundColor = .white
        passwordField.leftViewMode = .always
        passwordField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 0))
        return passwordField
    }()

    @IBOutlet weak var button: UIButton!


    private let signOutButton: UIButton = {
        let button = UIButton()
        button.backgroundColor = .systemBlue
        button.setTitleColor(.white, for: .normal)
        button.setTitle("Log Out", for: .normal)

        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()


        emailField.delegate = self
        passwordField.delegate = self


        NotificationCenter.default.addObserver(self, selector:
            #selector(keyboardWillChange), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector:
            #selector(keyboardWillChange), name: UIResponder.keyboardWillHideNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector:
            #selector(keyboardWillChange), name:UIResponder.keyboardWillChangeFrameNotification, object: nil)



        view.addSubview(companyLogo)
        view.addSubview(signInLogo)
        view.addSubview(emailField)
        view.addSubview(passwordField)
        view.addSubview(button)
        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)

        if FirebaseAuth.Auth.auth().currentUser != nil {


            companyLogo.isHidden = true
            signInLogo.isHidden = true
            emailField.isHidden = true
            passwordField.isHidden = true
            button.isHidden = true

            view.addSubview(signOutButton)
            signOutButton.frame = CGRect(x: 20, y: 150, width: view.frame.size.width-40, height: 52)
            signOutButton.addTarget(self, action: #selector(logOutTapped), for: .touchUpInside)
        }
    }

    @objc private func logOutTapped(){
        do {
            try FirebaseAuth.Auth.auth().signOut()

            companyLogo.isHidden = false
            signInLogo.isHidden = false
            emailField.isHidden = false
            passwordField.isHidden = false
            button.isHidden = false

            signOutButton.removeFromSuperview()
        }
        catch {
            print("An error occurred")
        }
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()



        companyLogo.frame = CGRect(x: 0,
                                y: 125,
                                width: 179,
                                height: 141)


        companyLogo.center.x = self.view.center.x // for horizontal
        //myButton.center.y = self.view.center.y // for vertical


        signInLogo.frame = CGRect(x: 0,
                            y: companyLogo.frame.origin.y+signInLogo.frame.size.height+150,
                            width: 110,
                            height: 36)
        signInLogo.center.x = self.view.center.x



        emailField.frame = CGRect(x: 20,
                                y: signInLogo.frame.origin.y+signInLogo.frame.size.height+50,
                                width: view.frame.size.width-40,
                                height: 50)
        emailField.addLayerEffects(cornerRadius: 5)



        passwordField.frame = CGRect(x: 20,
                                    y: emailField.frame.origin.y+emailField.frame.size.height+10,
                                    width: view.frame.size.width-40,
                                    height: 50)
        passwordField.addLayerEffects(cornerRadius: 5)



        button.frame = CGRect(x: 20,
                            y: passwordField.frame.origin.y+passwordField.frame.size.height+30,
                            width: view.frame.size.width-40,
                            height: 52)
        button.addLayerEffects(cornerRadius: 4)

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        if FirebaseAuth.Auth.auth().currentUser == nil {
            //emailField.becomeFirstResponder()
        }
    }



    @IBAction func didTapButton(_ sender: Any) {
        print("Continue button tapped")
        guard let email = emailField.text, !email.isEmpty,
            let password = passwordField.text, !password.isEmpty else {
                print("missing field data")
                //self.performSegue(withIdentifier: "goHomeVC", sender: self)
                return
    }




        FirebaseAuth.Auth.auth().signIn(withEmail: email, password: password, completion: { [weak self] result, error in
            guard let strongSelf = self else {
                return
            }

            guard error == nil else {
                // show account creation
                strongSelf.showCreateAccount(email: email, password: password)
                return
            }

            print("You have signed in")

            strongSelf.signInLogo.isHidden = true
            strongSelf.emailField.isHidden = true
            strongSelf.passwordField.isHidden = true
            strongSelf.button.isHidden = true

            strongSelf.emailField.resignFirstResponder()
            strongSelf.passwordField.resignFirstResponder()

        })

    }

    func showCreateAccount(email: String, password: String) {
        let alert = UIAlertController(title: "Create Account",
                                    message: "Would you like to create an account?",
                                    preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Continue",
                        style: .default,
                        handler: {_ in

                            FirebaseAuth.Auth.auth().createUser(withEmail: email, password: password, completion: { [weak self] result, error in

                                guard let strongSelf = self else {
                                    return
                                }

                                guard error == nil else {
                                    // show account creation
                                    print("Account creation failed")
                                    return
                                }

                                print("You have signed in")

                                strongSelf.signInLogo.isHidden = true
                                strongSelf.emailField.isHidden = true
                                strongSelf.passwordField.isHidden = true
                                strongSelf.button.isHidden = true

                                strongSelf.emailField.resignFirstResponder()
                                strongSelf.passwordField.resignFirstResponder()

                            })

        }))
        alert.addAction(UIAlertAction(title: "Cancel",
                        style: .cancel,
                        handler: {_ in

        }))

        present(alert, animated: true)
    }



    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        emailField.resignFirstResponder()
        passwordField.resignFirstResponder()
        return true
    }


    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }


    @objc func keyboardWillChange(notification: Notification) {




        guard let keyboardRect = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
                else {
                    return
                }

        if notification.name == UIResponder.keyboardWillShowNotification || notification.name == UIResponder.keyboardWillChangeFrameNotification {


            view.frame.origin.y = -245
        } else {

            view.frame.origin.y = 0
        }

    }





}
导入UIKit
导入FirebaseAuth
类LoginVC:UIViewController、UITextFieldDelegate{
private let companyLogo=UIImageView(图像:UIImage(命名为:“Company Logo White.png”);
private-let-signinglogo=UIImageView(图像:UIImage(名为:“SignInText.png”);
私有let emailField:UITextField={
让emailField=UITextField()
emailField.placeholder=“电子邮件地址”
emailField.layer.borderWidth=1
emailField.autocapitalizationType=.none
emailField.layer.borderColor=UIColor.white.cgColor
emailField.backgroundColor=.white
emailField.leftViewMode=.always
emailField.leftView=UIView(帧:CGRect(x:0,y:0,宽度:5,高度:0))
返回电子邮件字段
}()
私有let密码字段:UITextField={
设passwordField=UITextField()
passwordField.placeholder=“密码”
passwordField.layer.borderWidth=1
passwordField.isSecureTextEntry=true
passwordField.layer.borderColor=UIColor.white.cgColor
passwordField.backgroundColor=.white
passwordField.leftViewMode=.always
passwordField.leftView=UIView(帧:CGRect(x:0,y:0,宽度:5,高度:0))
返回密码字段
}()
@IBVAR按钮:UIButton!
私人出租标志:UIButton={
let button=UIButton()
button.backgroundColor=.systemBlue
button.setTitleColor(.white,表示:。正常)
setTitle(“注销”,用于:。正常)
返回按钮
}()
重写func viewDidLoad(){
super.viewDidLoad()
emailField.delegate=self
passwordField.delegate=self
NotificationCenter.default.addObserver(self,选择器:
#选择器(keyboardWillChange),名称:UIResponder.keyboardWillShowNotification,对象:nil)
NotificationCenter.default.addObserver(self,选择器:
#选择器(keyboardWillChange),名称:UIResponder.keyboardWillHideNotification,对象:nil)
NotificationCenter.default.addObserver(self,选择器:
#选择器(keyboardWillChange),名称:UIResponder.keyboardWillChangeFrameNotification,对象:nil)
view.addSubview(companyLogo)
view.addSubview(signInLogo)
view.addSubview(emailField)
view.addSubview(密码字段)
view.addSubview(按钮)
addTarget(self,action:#选择器(didTapButton),用于:.touchupinder)
如果FirebaseAuth.Auth.Auth().currentUser!=nil{
companyLogo.ishiden=true
SIGNNLOGO.isHidden=真
emailField.ishiden=true
passwordField.ishiden=true
button.ishiden=true
视图.添加子视图(SignBurtton)
signexputton.frame=CGRect(x:20,y:150,宽度:view.frame.size.width-40,高度:52)
signexputton.addTarget(self,action:#选择器(logoutttapped),用于:。touchUpInside)
}
}
@objc专用函数logOutTapped(){
做{
请尝试FirebaseAuth.Auth.Auth().signOut()
companyLogo.ishiden=false
signinglogo.ishiden=false
emailField.ishiden=false
passwordField.ishiden=false
button.ishiden=false
SignExputton.removeFromSuperview()的
}
抓住{
打印(“发生错误”)
}
}
重写func viewdilayoutsubviews(){
super.viewDidLayoutSubviews()
companyLogo.frame=CGRect(x:0,
y:125,
宽度:179,
身高:141)
companyLogo.center.x=self.view.center.x//表示水平
//myButton.center.y=self.view.center.y//表示垂直
signInLogo.frame=CGRect(x:0,
y:companyLogo.frame.origin.y+signInLogo.frame.size.height+150,
宽度:110,
身高:36)
signinglogo.center.x=self.view.center.x
emailField.frame=CGRect(x:20,
y:signInLogo.frame.origin.y+signInLogo.frame.size.height+50,
宽度:view.frame.size.width-40,
身高:50)
emailField.AddLayerReffects(拐角半径:5)
passwordField.frame=CGRect(x:20,
y:emailField.frame.origin.y+emailField.frame.size.height+10,
宽度:view.frame.size.width-40,
身高:50)
passwordField.AddLayerFects(拐角半径:5)
button.frame=CGRect(x:20,
y:passwordField.frame.origin.y+passwordField.frame.size.height+30,
宽度:view.frame.size.width-40,
身高:52)
按钮。添加图层效果(拐角半径:4)
}
覆盖函数视图显示(u动画:Bool){
super.viewdide显示(动画)
如果FirebaseAuth.Auth.Auth().currentUser==nil{
//emailField.becomeFirstResponder()
}
}
@iAction func didTapButton(\发送方:任何){
打印(“点击继续按钮”)
guard let email=emailField.text,!email.isEmpty,
让password=passwordField.text,!password.isEmpty else{
打印(“缺少字段数据”)