簡體   English   中英

僅文本字段為空時如何顯示圖像?

[英]How to show image when textfield is empty only?

我有4個文本字段,一個按鈕和一個圖像,我要實現的目標是,當按下按鈕時,它應該警告用戶有空的文本字段並顯示指向空文本字段的圖像,但是使用戶將文本放入空白文本字段時,圖像消失。 謝謝

這是我的功能

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
    }
}

您應該將圖像的創建(addSubview)和檢查

將創建內容放入viewDidLoad

然后檢查這些字段並隱藏或顯示它。

剛才您每次都創建一個新圖像放置在先前創建的圖像上(如果您切換到線框3d調試視圖,則可以檢查此項)

而不是檢查if userPhone.isEmpty是否應該嘗試:

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

您甚至可以:

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

您可以調用一個函數來處理檢查,然后在文本不為空的情況下隱藏圖像,如下所示:

1在為事件.editingChanged創建.editingChanged的位置,將一個目標添加到textField中:

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)

2設置用於檢查文本字段是否被編輯的方法:

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

因此,如果將此示例應用於所有文本字段,則不需要在checkFields()進行檢查,並且可以將方法重命名為setupTextFields() ,例如,僅將其用於創建文本字段

在類的所有方法中使用圖像視圖的示例,但請確保例如在viewDidLoad()進行初始化,以避免在解開可選值時發現nil錯誤

class YourClass: UIViewController {

  // ImageView Reference
  var emailImageView1: UIImageView!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM