私は私のサインアップとストーリーボードのログイン両方のための迅速なファイルを持っていますが、もちろん異なるビューコントローラ...私の問題は、私がそれを実行すると何も起こらない、例えば私は私のログイン画面にアクセスし、テキストフィールドに情報がなくても私のアプリのメイン画面に移動します。これは、画面に情報を入力するかどうかにかかわらず発生します。だから私の推測は、このコードをすべてスキップしなければならないことを意味するものではありません。申し訳ありませんが使用する間違った用語です。自分のテキストフィールドをIBOutletsに接続して、この素早いファイルと同様にプロジェクトにFirebaseをインポートします。私はXcode 9.1 beta 2を使用しています。どんなフィードバックも大変ありがとうございます。すべてのコードを入力した後、Xcodeはfirebaseのログインを完全にスキップしますか?
import Foundation
import UIKit
import FirebaseAuth
class SignUpandLoginController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBAction func goWhenPressed(_ sender: UIButton) {
performSegue(withIdentifier: "goLoginTabControl", sender: self)
}
@IBOutlet weak var myImageSignUpView: UIImageView!
@IBAction func importImage(_ sender: AnyObject)
{
let image = UIImagePickerController()
image.delegate = self
image.sourceType = UIImagePickerControllerSourceType.photoLibrary
image.allowsEditing = false
self.present(image, animated: true)
{
//After it is complete
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
{
myImageSignUpView.image = image
}
else
{
//Error message
}
self.dismiss(animated: true, completion: nil)
}
@IBOutlet weak var firstNameSignUp: UITextField?
@IBOutlet weak var lastNameSignUp: UITextField?
@IBOutlet weak var usernameSignUp: UITextField?
@IBOutlet weak var emailSignUp: UITextField?
@IBOutlet weak var passwordSignUp: UITextField?
@IBOutlet weak var retypePasswordSignUp: UITextField?
@IBOutlet weak var usernameLogin: UITextField! //!
@IBOutlet weak var passwordLogin: UITextField! //!
@IBOutlet weak var segmentControl: UISegmentedControl!
@IBOutlet weak var actionButton: UIButton!
func action(_ sender: UIButton) {
guard let username = self.usernameLogin.text else { return }
guard let password = self.passwordLogin.text else { return }
func viewDidLoad() {
super.viewDidLoad()
Auth.auth().signIn(withEmail: username, password: password, completion: { (user, error) in if user != nil
{
//Sign in successful
print("SUCCESS")
}
else
{
if let myError = error?.localizedDescription
{
print(myError)
}
else
{
print("ERROR")
}
}
})
//create user
Auth.auth().createUser(withEmail: username, password: password, completion: { (user, error) in if user != nil
{
print("SUCCESS")
}
else
{
if let myError = error?.localizedDescription
{
print(myError)
}
else
{
print("ERROR")
}
}
})
}
self.firstNameSignUp?.delegate = self
self.lastNameSignUp?.delegate = self
self.usernameSignUp?.delegate = self
self.emailSignUp?.delegate = self
self.passwordSignUp?.delegate = self
self.retypePasswordSignUp?.delegate = self
self.usernameLogin?.delegate = self
self.passwordLogin?.delegate = self
}
//Hide keybaord when user touches outside keyboard
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
//Presses return key
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return(true)
}
}
基本的に「ログイン」ボタンであるボタンを切断し、ビュー・コントローラーをログイン・ボタンの代わりにメイン・アプリケーション・ビューにドラッグする必要があると言っていますか? –
正しい。 2番目の画面に直接接続されているボタンを切断します。次に、代わりに最初の画面を画面に接続します。 'segue'の識別子に何かをつけて、signinとsigupの成功ブロックの中に' performSegue'という関数を入れてください。 – Glenn
これは愚かな質問のように見えるかもしれませんが、私はどのように素早いファイルの中でpreformSegueをやりますか?申し訳ありません...私はSwiftで新しいです。 –