如何将文本字段的值传递给Swift中的按钮点击函数



我需要在按下登录按钮时预先进行用户名和登录检查。我需要在没有故事板的情况下完成这一切。然而,我的问题是,当我创建一个连接到函数的按钮时,文本字段就会超出范围。

重写函数视图DidLoad(){super.viewDidLoad()

        let Login = UIButton()
        makeButton(Login, name: "Login", location: CGRectMake((screenSize.width-120)/2, 5*screenSize.width/6, 120, 30))
        Login.addTarget(self, action: "loginChecks", forControlEvents: .TouchUpInside)

        // Makes Text Fields
        let usernameField: UITextField = UITextField()
        makeTextField(usernameField, frame: CGRectMake((screenSize.width-300)/2 + 300, 175, 300, 35))
        let passwordField: UITextField = UITextField()
        makeTextField(passwordField, frame: CGRectMake((screenSize.width-300)/2 + 300, 350, 300, 35))
        // Makes Text Labels
        let usernameLabel: UILabel = UILabel()
        makeLabel(usernameLabel, name: "Username", frame: CGRectMake((screenSize.width-300)/2 - 300, 175, 300, 55))
        let passwordLabel: UILabel = UILabel()
        makeLabel(passwordLabel, name: "Password", frame: CGRectMake((screenSize.width-300)/2 - 300, 350, 300, 55))
        self.configureView()
    }

**这是ViewDidLoad**之外的一个单独功能

func loginChecks(){
            // Checks login logic

输入的密码和输入的用户名似乎都在范围之外

            var inputtedPassword = passwordField.text
            var inputtedUsername = usernameField.text
            print(inputtedUsername)
            print(inputtedPassword)
            if (inputtedUsername == ""){
                makeAlert("No Username", message: "Please input a username.", printStatement: "No username")
                return
            } else if(inputtedPassword == ""){
                makeAlert("No Password", message: "Please input a password.", printStatement: "No password")
                return
            } else {
            }
        }

您应该将usernameFieldpasswordField声明为类中的属性,这样您就可以从多个方法访问它们。例如:

class ViewController: UIViewController {
let usernameField: UITextField = UITextField()
let passwordField: UITextField = UITextField()
override func viewDidLoad() {
    super.viewDidLoad()
    let Login = UIButton()
    makeButton(Login, name: "Login", location: CGRectMake((screenSize.width-120)/2, 5*screenSize.width/6, 120, 30))
    Login.addTarget(self, action: "loginChecks", forControlEvents: .TouchUpInside)

    // Makes Text Fields
    makeTextField(usernameField, frame: CGRectMake((screenSize.width-300)/2 + 300, 175, 300, 35))
    makeTextField(passwordField, frame: CGRectMake((screenSize.width-300)/2 + 300, 350, 300, 35))
    // Makes Text Labels
    let usernameLabel: UILabel = UILabel()
    makeLabel(usernameLabel, name: "Username", frame: CGRectMake((screenSize.width-300)/2 - 300, 175, 300, 55))
    let passwordLabel: UILabel = UILabel()
    makeLabel(passwordLabel, name: "Password", frame: CGRectMake((screenSize.width-300)/2 - 300, 350, 300, 55))
    self.configureView()
}
func loginChecks(){
    // Checks login logic
    var inputtedPassword = passwordField.text
    var inputtedUsername = usernameField.text
    print(inputtedUsername)
    print(inputtedPassword)
    if (inputtedUsername == ""){
        makeAlert("No Username", message: "Please input a username.", printStatement: "No username")
        return
    } else if(inputtedPassword == ""){
        makeAlert("No Password", message: "Please input a password.", printStatement: "No password")
        return
    } else {
    }
}

}

最新更新