2016-08-09 51 views
0

我使用SCLAlertView Framework作为我的警报视图。 https://github.com/vikmeup/SCLAlertView-Swiftswift在alertview textfield中获取nil值

我使用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)发送到后端服务器。然而,当我点击它只能返回空值提交按钮 这是提交登录按钮功能

func submitLogin(){ 
let email = emailSubmit.text! 
let password = passwordSubmit.text! 

print("\(email),\(password)") 
} 

然而,它显示为零,当我点击提交按钮任何人都可以指出什么是错的代码?

回答

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会在其内部创建文本框。

+1

omg ...我不应该创建扇区来调用函数。它会更复杂。谢了哥们 !说得好! –

2

我认为你的代码中存在两个不同的emailSubmitpasswordSubmit变量。函数showLogin的外部是您在submitLogin方法中使用的那个函数,但这些字段在第1行和第2行上没有任何值时被初始化。还有一个实例被初始化并添加到showLogin方法内的SCLAlertView并显示,但其值为没有用过。

你应该使用blocks喜欢它是如何在sample code

+0

哦,是的!我应该使用块! –

相关问题