如何将文本字段的值传递给Swift3中的按钮单击功能?

时间:2017-06-24 09:19:05

标签: 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?

1 个答案:

答案 0 :(得分:0)

usernameTextField不在范围之外,您的应用只会崩溃,因为您已使用viewDidLoad内的局部变量隐藏了该名称的属性。 您应该将let - 行更改为usernameTextField =,该行不会创建同名的本地变量,而是为该属性分配内容:

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)

    ...

}