2016-08-09 5 views
0

私は私の警告表示としてSCLAlertViewフレームワークを使用します。 https://github.com/vikmeup/SCLAlertView-SwiftSWIFTのget nilの値

私は、テキストフィールドと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)") 
} 

提出ログインボタン機能であるnilの値を返します?

答えて

1

で提案される方法のコードは次のようにする必要がありますようにあなたは、おそらくblocksを使用する必要があります。

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 emailと同じ確認ボタンを押す前にnilvar passwordの値を設定します。

alertviewはテキストフィールドを作成するため、電子メールとパスワードのテキストフィールドを定義する必要はありません。

+1

omg ...私は関数を呼び出すセクタを作成すべきではありません。もっと複雑になるでしょう。ありがとう !まあ説明! –

2

私はあなたのコードに存在する2つの異なるemailSubmitpasswordSubmit変数があると思います。関数showLoginの外のものは、submitLoginメソッドで使用しているものですが、これらのフィールドは1行目と2行目で値なしで初期化されます。showLoginメソッド内のSCLAlertViewに初期化されて追加されたインスタンスですそうでなければ使用されません。

それはsample code

+0

ああ!私はブロックを使用する必要があります! –

関連する問題