2017-04-19 7 views
0

私は4つのテキストフィールド、ボタンとイメージを持っていますが、私が達成しようとしているのは、ボタンを押すと、空のテキストフィールドがあり、空のテキストフィールドを指しているイメージを表示する必要がありますユーザーが空のテキストフィールドにテキストを入力すると、イメージが消えます。あなたがイメージ(addSubview)の作成を分離する必要があり、チェックテキストフィールドが空の場合のみイメージを表示するにはどうすればいいですか?

viewDidLoad

に作成を入れて、後でフィールドをチェックし、ここで

は私のFUNCある

func checkFields(){ 
    let userEmail = user_EmailTxtField.text! 
    let userPassword = user_PassTxtField.text! 
    let passwordConfirm = pass_ConfirmTxtField.text! 
    let userPhone = user_PhoneTxtField.text! 
    //Set backArrow image to show input error to password 
    let imageName = "backArrow.png" 
    let image = UIImage(named: imageName) 
    let passImageView1 = UIImageView(image: image!) 
    passImageView1.frame = CGRect(x: 319, y: 331, width: 49, height: 49) 
    view.addSubview(passImageView1) 
    //Show Arrow image to password confirm error 
    let passConfirmImageView1 = UIImageView(image: image!) 
    passConfirmImageView1.frame = CGRect(x: 319, y: 394, width: 49, height: 49) 
    view.addSubview(passConfirmImageView1) 
    //Show arrow Image to email error 
    let emailImageView1 = UIImageView(image: image!) 
    emailImageView1.frame = CGRect(x: 319, y: 270, width: 49, height: 49) 
    view.addSubview(emailImageView1) 
    //Set image to phonetxt field error 
    let phoneImageView1 = UIImageView(image: image!) 
    phoneImageView1.frame = CGRect(x: 319, y: 209, width: 49, height: 49) 
    view.addSubview(phoneImageView1) 
    if userPhone.isEmpty { 
     phoneImageView1.isHidden = false 
    } else { 
     phoneImageView1.isHidden = true 
    } 
    if userEmail.isEmpty { 
     emailImageView1.isHidden = false 
    } 
    if userPassword.isEmpty { 
     passImageView1.isHidden = false 
    } 
    if passwordConfirm.isEmpty { 
     passConfirmImageView1.isHidden = false 
    } 
} 

答えて

0

をあなたはあなたの小切手を扱う関数を呼び出すし、テキスト私ならば、あなたの画像を非表示にすることができますこのような空のsn't:

あなたがイベント.editingChangedのためにそれらを作成する場所で、あなたのテキストフィールドにターゲットを追加します。

user_EmailTxtField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged) 
user_PhoneTxtField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged) 
pass_ConfirmTxtField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged) 
pass_ConfirmTxtField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged) 

セットアップあなたがいるかどうかをチェックするために使用する方法をテキストフィールドを編集したばかり:

func textFieldDidChange() { 
    emailImageView1.isHidden = user_EmailTxtField.hasText 
    phoneImageView1.isHidden = user_PhoneTxtField.hasText 
    passImageView1.isHidden = pass_ConfirmTxtField.hasText 
    passConfirmImageView1.isHidden = pass_ConfirmTxtField.hasText 
} 

をすべてのあなたのテキストフィールドに、この例を適用するのであれば、あなたがcheckFields()にチェックを必要としない、あなたはrenamすることができます電子例えばsetupTextFields()へのあなたの方法は、中に見つかったnilのエラーを回避するために、クラスを超えるすべてのメソッドであなたの画像ビューを使用しますが、例えばviewDidLoad()に初期化してくださいするだけでテキストフィールドの作成など

例をそれを使用するには私はこれを試してみた

class YourClass: UIViewController { 

    // ImageView Reference 
    var emailImageView1: UIImageView! 

    // then your checkFields method 
    func checkFields() { 
    // code before 
    emailImageView1 = UIImageView(image: image!) 
    // code after 
    } 
} 
+0

オプションの値をアンラップすることが、それは私にあなたが私の最新のアップデートを使用した場合、あなたがチェックすることができtextInput.isemptyライン – SCS

+0

上の非機能タイプ 『ブール』の値を呼び出すことはできません」というエラーを与えます答えのそれはかなり多く更新されました – ronatory

+1

@SCSあなたの 'if!user_EmailTxtField.hasText'がさらに良い' emailImageView1.isHidden = user_EmailTxtField.hasText' –

0

ありがとうとそれを隠すか、またはそれを示す。

はちょうど今あなたがするたびに代わりif userPhone.isEmptyをチェックする以前作成した画像の上に配置され、新たな画像(あなたはワイヤーフレームの3Dデバッグビューに切り替える場合は、これをチェックすることができます)

0

を作成し、あなたが試してみてください:

if user_EmailTxtField.text == nil { 
    phoneImageView1.isHidden = false 
} 

あなたも行うことができます:

if user_EmailTxtField.text == nil || user_EmailTxtField.text == "" { 
     phoneImageView1.isHidden = false 
} 
関連する問題