我需要在按下登录按钮时预先进行用户名和登录检查。我需要在没有故事板的情况下完成这一切。然而,我的问题是,当我创建一个连接到函数的按钮时,文本字段就会超出范围。
重写函数视图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 {
}
}
您应该将usernameField
和passwordField
声明为类中的属性,这样您就可以从多个方法访问它们。例如:
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 {
}
}
}