2016-08-09 52 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

哦,是的!我應該使用塊! –

相關問題