根据if语句设置UITextField占位符文本颜色

时间:2017-08-15 20:16:16

标签: ios swift if-statement uitextfield

在我正在开发的应用中,有一个电子邮件地址和密码UITextField。

我正在尝试设置条件,以便当按下SignIn按钮时,如果其中一个或两个都为空(“”),则占位符文本应为红色,突出显示给用户以完成它们。

我是iOS开发的新手(或者一般的开发)所以我的逻辑思维可能是错误的。 无论如何,这是我写的和开头的:

       @IBAction func signInTapped(_ sender: Any) {

    if emailField.text == "" {
          emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])

        if pwdField.text == "" {
            pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
        }
    }else { 

如果符合以下条件,则此操作非常有效:
- 两个字段均为空 - 电子邮件地址为空且密码字段已填写

但是......如果电子邮件地址字段已填写密码字段为空,密码字段占位符文本不会更改。

我很想知道我哪里出错了,或者是否有更简单/逻辑的方式来实现结果。

2 个答案:

答案 0 :(得分:0)

我不喜欢{}的快捷方式,所以我举例说明他们与众不同。

您的代码有不同的缩进:

@IBAction func signInTapped(_ sender: Any) 
{   
    if emailField.text == "" 
    {
        emailField.attributedPlaceholder = NSAttributedString(string: "Email 
            address", attributes: [NSForegroundColorAttributeName: 
            UIColor.red])

        if pwdField.text == "" 
        {
            pwdField.attributedPlaceholder = NSAttributedString(string: 
                "Password", attributes: [NSForegroundColorAttributeName: 
                UIColor.red])
        }
    }
    else { 

注意您的if语句是如何嵌套的。除非pwdField为空,否则不会检查emailField

要修复它,请将其移除并注意我移动else并将其转为else if

固定代码:

@IBAction func signInTapped(_ sender: Any) 
{
    if emailField.text == "" 
    {
        emailField.attributedPlaceholder = NSAttributedString(string: "Email 
            address", attributes: [NSForegroundColorAttributeName: 
            UIColor.red])
    }

    if pwdField == "" 
    {
        pwdField.attributedPlaceholder = NSAttributedString(string: 
            "Password", attributes: [NSForegroundColorAttributeName: 
            UIColor.red])
    }

    else if emailField.text != "" 
    { 
         //here both fields have text inside them
    }

}

答案 1 :(得分:0)

你在另一个if语句中有一个If语句。

而不是:

if emailField.text == "" {
          emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])

        if pwdField.text == "" {
            pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
        }
}

使用此:

if emailField.text == "" {
          emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])
}

if pwdField.text == "" {
            pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
}

希望这有帮助!