我使用SCLAlertView Framework作为我的警报视图。 https://github.com/vikmeup/SCLAlertView-Swift
我使用textfield创建一个alertview。这是代码。
let emailSubmit: UITextField = UITextField()
let passwordSubmit: UITextField = UITextField()
var email: String?
var password: String?
//This function call when loginbutton tapped
func showLogin(){
let alertView = SCLAlertView()
let emailSubmit = alertView.addTextField("Enter your Email")
let passwordSubmit = alertView.addTextField("Password")
email = emailSubmit.text
password = passwordSubmit.text
passwordSubmit.secureTextEntry = true
alertView.addButton("Confirm", target:self, selector:#selector(ViewController.submitLogin))
alertView.showTitle(
"Login",
subTitle: "",
duration: nil,
completeText: "Cancel",
style: .Info)
}
它要求我为按钮添加一个功能。函数名称是submitLogin。它用于将登录详细信息(textfield.text
)发送到后端服务器。但是,单击提交按钮后,它只返回nil值
这是提交登录按钮功能
func submitLogin(){
let email = emailSubmit.text!
let password = passwordSubmit.text!
print("\(email),\(password)")
}
但是,点击提交按钮时显示为任何人都可以指出代码有什么问题吗?
答案 0 :(得分:2)
我认为您的代码中存在两个不同的emailSubmit
和passwordSubmit
变量。函数showLogin
之外的那个是你在submitLogin
方法中使用的那个,但是那些字段在第1行和第2行初始化时没有任何值。还有另一个实例被初始化并添加到{{1在SCLAlertView
方法内部并显示但其值不会被使用。
您可能应该使用showLogin
,就像sample code
答案 1 :(得分:1)
守则应该是这样的:
var email: String?
var password: String?
//This function call when loginbutton tapped
@IBAction func showLogin(){
let alertView = SCLAlertView()
let emailSubmit = alertView.addTextField("Enter your Email")
let passwordSubmit = alertView.addTextField("Password")
passwordSubmit.secureTextEntry = true
alertView.addButton("Confirm") {
self.email = emailSubmit.text
self.password = passwordSubmit.text
self.submitLogin()
}
alertView.showTitle(
"Login",
subTitle: "",
duration: nil,
completeText: "Cancel",
style: .Info)
}
func submitLogin(){
print("\(email),\(password)")
}
<强>解释强>
在用户按下确认按钮之前,代码行password = passwordSubmit.text
将var password
设置为nil
,与var email
相同。
并且不需要定义电子邮件和密码文本字段,因为alertview将在其自身内创建文本字段。