从xCode上的swift/编码开始,在什么时候我可以使用segue将我带到我的homeVC?
当我无法切换到一个新的VC时,我正在跟随一个教程 所讨论的序列:从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
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{
打印(“缺少字段数据”)