2017-03-09 7 views
0

uitableのビューのセル内のテキストフィールドを検証します私のUITableViewに約15個の細胞があり、そのうち1個は電子メールです。 メールのラベルUITextFieldになります。私は電子メールの検証をする必要があります。では、どうすればそのフィールドの検証を行うことができますか? すべてのアイデアは本当に感謝されます。私は電子メールの検証のために使用しています。はどのように私は、私は、カスタムセルを持つ

func isValidEmail(testStr:String) -> Bool { 
    print("validate emilId: \(testStr)") 
    let emailRegEx = "^(?:(?:(?:(?:)*(?:(?:(?:\\t|)*\\r\\n)?(?:\\t|)+))+(?:)*)|(?:)+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?:)*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?:)*)|(?:)+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?:)*[!-Z^-~])*(?:)*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?:)*(?:(?:(?:\\t|)*\\r\\n)?(?:\\t|)+))+(?:)*)|(?:)+)?$" 
    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx) 
    let result = emailTest.evaluateWithObject(testStr) 
    return result 
} 

私は、登録フォームを作成していますし、フォームのすべてのものは、私はここでは2つの問題があると言うだろうフィールド

+0

これはここで何度も議論されています。 「UITextField電子メールの検証」などで検索してください。 – matt

+0

IBOutletに接続されているテキストフィールドの電子メールの検証についてのすべてです。私の懸念は、私は同じセルを持ち、別の目的に使用しています。私は電子メールという名前のラベルを持つセルの電子メールを検証したいと思います。 – Niroj

+0

そしてその部分は厳密には堅い部分ですか?あなたは実際に問題にぶつかっていますか? – matt

答えて

0

のAPIでも、名前からロードされています。

  • アプリのライフサイクルのどの時点で検証を実行するのですか?ユーザーがテキストフィールドの編集を終了したときに、これを行うとよいでしょう。したがって、テキストフィールドに代理人を指定して、textFieldShouldEndEditing(_:)を検出し、検証し、無効であれば終了編集を防止する必要があります。

  • これを実行したら、これが電子メールテキストフィールドであることをどのように知ることができますか?明らかに、電子メールテキストフィールドはと異なる必要があります。簡単な解決策は、メールテキストフィールドに確認可能な値のtagを与えることです。他のすべてのテキストフィールドはtagの値0で、このテキストフィールドはtagの値1です。

どちらもそれらのものは、(あなたの現在のコードは、空白行を持って正確に)あなたのcellForRowAt:実装で設定されます。どの行が電子メール行なのかわかるので、テキストフィールドを特別に扱わなければなりません。あなたが知っているので、セルが再利用されるので、すべての行をカバーするようにしてください。

+0

は登録フォームです。フォームのすべてのものはAPIのフィールド名からロードされます。だから私は実際にそのフィールドを特定して電子メールを検証する方法を混乱させています。 – Niroj

+0

しかし、あなたは明らかにフィールドを識別しています。 「フォームのすべてのものがAPIの名前からロードされている」ということについてのあなたの質問には何も言わなかったし、それが意味することを知る方法もない。私はあなたが明らかにしたものに基づいてのみ答えることができます。あなたが問題の最も重要な部分を隠すことを選択した場合、それは隠され、答えを得ることはできません。私の答えはあなたが明らかにしたものに基づいており、あなたがする必要があることを正確に記述しています。 – matt

+0

はい、私はこの部分を見逃してはいけません。 – Niroj

関連する問題