在我正在开发的应用程序中,有一个电子邮件地址和密码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 {
在以下情况下,此方法非常适用:-两个字段均为空-电子邮件地址为空,密码字段为空但是,如果电子邮件地址字段为空而密码字段为空,则密码字段占位符文本不会更改。
我很想知道我要去哪里错了,或者是否有更简单/合乎逻辑的方法来获得结果。
最佳答案
我不喜欢swift使用{}
的方式,因此在示例中,我向他们展示了不同之处。
您的代码具有不同的缩进:
@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
}
}