2017-06-24 4 views
0

ログインボタンを押すと、ユーザー名とログインのチェックを行う必要があります。私はプログラムでこのすべてを行う必要があります。とにかく、私の問題は、関数に接続するボタンを作成すると、テキストフィールドが範囲外になるということです。Swift3のボタンクリックされた機能にテキストフィールドの値を渡すことはできますか?

import UIKit 

class ViewController: UIViewController { 

    var usernameTextField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let usernameTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 300.00, height: 30.00)); 
     usernameTextField.center = CGPoint(x: 160, y: 80) 
     usernameTextField.placeholder = "username" 
     usernameTextField.text = "" 
     usernameTextField.borderStyle = UITextBorderStyle.line 
     usernameTextField.backgroundColor = UIColor.white 
     usernameTextField.textColor = UIColor.blue 
     self.view.addSubview(usernameTextField) 



     let button = UIButton(type: UIButtonType.system) as UIButton 

     let xPostion:CGFloat = 10 
     let yPostion:CGFloat = 200 
     let buttonWidth:CGFloat = 150 
     let buttonHeight:CGFloat = 45 

     button.frame = CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight) 

     button.backgroundColor = UIColor.lightGray 
     button.setTitle("Submit", for: UIControlState.normal) 
     button.tintColor = UIColor.black 
     button.addTarget(self, action: #selector(ViewController.buttonAction(_:)), for: .touchUpInside) 

     self.view.addSubview(button) 


    } 



    func buttonAction(_ sender:UIButton!) { 

     let username = usernameTextField.text 

     print("Username value is \(String(describing: username))!") 
     print("Button tapped") 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

buttonAction関数でusernameTextFieldを取得するにはどうすればよいですか?

答えて

0

usernameTextFieldは範囲外ではありません。ローカル変数がviewDidLoadの内部にその名前のプロパティが隠されているため、アプリがクラッシュするだけです。 あなたは、同じ名前のローカル変数を作成する代わりに、プロパティに何かを代入しませんusernameTextField =にごlet -line変更する必要があります。

override func viewDidLoad() { 
    super.viewDidLoad() 

    usernameTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 300.00, height: 30.00)); 
    usernameTextField.center = CGPoint(x: 160, y: 80) 
    usernameTextField.placeholder = "username" 
    usernameTextField.text = "" 
    usernameTextField.borderStyle = UITextBorderStyle.line 
    usernameTextField.backgroundColor = UIColor.white 
    usernameTextField.textColor = UIColor.blue 
    self.view.addSubview(usernameTextField) 

    ... 

} 
関連する問題