2017-01-07 4 views
-4

インスタンスに送信:スウィフト3未認識セレクタは、私はこのエラーを取得するUIButton

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITouchesEvent text]: unrecognized selector sent to instance 0x6100000e9400'

それは上のクラッシュボタン:

import UIKit 
import Firebase 
import FBSDKLoginKit 

class RegisterViewController: UIViewController, FBSDKLoginButtonDelegate, UITextFieldDelegate { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
     // Create Sign Up button 
     let signUpButton: UIButton = { 
      let button = UIButton() 
      button.setImage(#imageLiteral(resourceName: "Go [email protected]"), for: .normal) 
      button.addTarget(self, action: #selector(createAccountTapped), for: .touchUpInside) // when tapped on Sign In button, execute function SignInTapped 
      button.translatesAutoresizingMaskIntoConstraints = false 
      return button 
      }() 
     func signUpButtonView() { 
      signUpButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
      signUpButton.heightAnchor.constraint(equalToConstant: 70).isActive = true 
      signUpButton.widthAnchor.constraint(equalTo: view.widthAnchor, constant: 0).isActive = true 
      signUpButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true 
     } 

     self.view.addSubview(signUpButton) 
     signUpButtonView() 

    } 

    func createAccountTapped(_ usernameTextField: UITextField, passwordTextField: UITextField, repeatPasswordTextField: UITextField) { 
     let username = usernameTextField.text 
     let password = passwordTextField.text 
     let repeatPassword = repeatPasswordTextField.text 
    } 
} 

私がFacebookでサインアップするための別のボタンがあり、それが正常に動作します。私はそれが関数createAccountTappedのパラメータと関係があると思いますが、何が問題なのか分かりません。

+0

"createAccountTapped"はIBActionではありません。どのメソッドがボタンに接続されているかボタンが押されたときに呼び出されますか?... – sanman

+1

@sanmanコードを読むと、ボタンにターゲットを追加したことがわかります。 –

+0

@BenjaminLowry私の悪い。私はMartynasがその機能にボタンを接続したと思ったが、これは不可能である。 – sanman

答えて

3

あなたはこれらのみアクションcreateAccountTapped()UIButtoncreateAccountTapped(_ sender: UIButton)を設定することができ、UIButtonアクションでUITextFieldインスタンスを渡すことはできません。

あなたUIButtonアクションでtextFieldにアクセスしたいなら、あなたはあなたのRegisterViewControllerにそのtextFieldためIBOutletを作成する必要があります。

+0

関数で使う必要のある定数をどうやって渡すのですか? – Martynas

+0

@Martynasアクションで 'UIButton'の代わりに他のインスタンスを渡すことはできません。私の答えをもう一度読む。 –

+0

@Martynasインスタンス変数として扱うことをお勧めします。 –

関連する問題